Discussion:
Excel 2007 VBA reparieren oder ignorieren
(zu alt für eine Antwort)
Hans Alborg
2015-01-10 17:47:00 UTC
Permalink
Hallo.

<VBA 2007>

Tja. Meine Mappe (Simu...) kann noch mit "Left" umgehen, aber wenn ich die
eingetippte Codezeile verlasse bleibt "Left" kleingeschrieben. Andere
"Lefts", schon vor langem programmiert, stehen auch klein da.
Das gilt nicht nur für "Left(String,n)", sondern z.B. auch für
"Userform.Textbox.Left = 50".

Right wird richtig umgesetzt: erster Buchstabe wird groß.

In einer neuen (kleinen) Testmappe wird aus "left(...)" wieder "Left(..."
wie es sich gehört.

Muß ich jetzt in der großen Mappe auf Fehlersuche gehen (wie?) oder Excel
"reparieren" oder das einfach so nehmen?

Ich glaub mit MS' Updates hat das ausnahmsweise nichts zu tun.

Hans
Walter Heying
2015-01-11 08:11:07 UTC
Permalink
Moin Hans,
steht vielleicht vorher irgendwo ein Hochkomma in der Zeile? Das würde das erklären. Dann wär's halt eine Kommentarzeile. Die Zeile wäre dann auch komplett grün.
Gruß
Walter
Hans Alborg
2015-01-11 18:00:49 UTC
Permalink
Hi Walter,

"Walter Heying" schrieb...
Post by Walter Heying
vorher irgendwo ein Hochkomma in der Zeile? Das würde das erklären. Dann
wär's halt eine Kommentarzeile. Die Zeile wäre dann auch komplett grün.
Leider nein, es betrifft ja Code der verarbeitet wird, und es fiel mir ja
beim Programmieren auf. Jedes "Left" steht als "left" da, im Gegensatz zu
den "Right"'s und anderen Befehlen.
Für weitere Suche nach Fehlern bleibt mir noch, andere Mappen zu checken und
in "dieser" Mappe Stück für Stück die Routinen zu löschen.

Hans
Claus Busch
2015-01-11 08:39:35 UTC
Permalink
Hallo Hans,
Post by Hans Alborg
Tja. Meine Mappe (Simu...) kann noch mit "Left" umgehen, aber wenn ich die
eingetippte Codezeile verlasse bleibt "Left" kleingeschrieben. Andere
"Lefts", schon vor langem programmiert, stehen auch klein da.
Das gilt nicht nur für "Left(String,n)", sondern z.B. auch für
"Userform.Textbox.Left = 50".
das ist mir noch nicht vorgekommen. Aber solange die Codezeile keine
rote Schriftfarbe bekommt und die Simulation noch läuft, würde ich mir
keine großen Gedanken machen.
Die Probleme, die das Dezember-Update verursacht hat, hast du bereinigt?


Mit freundlichen Grüßen
Claus
--
Vista Ultimate / Windows7
Office 2007 Ultimate / 2010 Professional
Hans Alborg
2015-01-11 18:23:44 UTC
Permalink
Hallo Claus,

"Claus Busch" schrieb...
Post by Hans Alborg
Tja. Meine Mappe (Simu...) kann noch mit "Left" umgehen, aber wenn ich
die eingetippte Codezeile verlasse bleibt "Left" kleingeschrieben....
das ist mir noch nicht vorgekommen. Aber solange die Codezeile keine rote
Schriftfarbe bekommt und die Simulation noch läuft, würde ich mir
keine großen Gedanken machen.

Naja, ich erlebe oft (am 1-GB-RAM-WinXP-Rechner) daß Excel abstürzt.
Meistens weil VBA nicht mehr weiß wie es meine Ergüsse compilieren soll.
Daher speichere ich oft ab und bewundere die Geduld des Programms.
Sowas nahm ich evtl. auch wegen des "left"'s an. Einfach eine Ansage an mich
das was im Code hakt.
Diesbezüglich interessiert es mich, wie ich den Code auf Plausibilität
prüfen kann.
Evtl. hab ich einfach schon zuviele Variablen drin?
Ich werde die Mappe mal zurückbauen, mal sehn ob es davon besser wird. Und
dann natürlich wieder zum jetzigen Stand zurückgehen, die Speicerfunktion
ist mein Freund!

Komisch aber, daß auch die Left- Eigenschaften von Objekten betroffen sind!
Die Probleme, die das Dezember-Update verursacht hat, hast du bereinigt?
Arrgh!!! Das ist ein Kapitel für sich!
Ich hab natürlich jedesmal nach MS' misslungenen Updates versucht, meine
Mappe (äh, nicht die Simulation) auf Vordermann zu bringen.
Hätte halt warten sollen bis die fertig waren, aber woher weiß ich das...
So hab ich diese Mappe wohl dermaßen verfummelt, das das nächste Update
wieder Schaden angerichtet hat.
Zudem es ein Unterschied ist, ob die Datei auf Win7 oder XP läuft.
Unter Win7 klappt inzwischen alles wieder, aber auf dem XP-Rechner zeigt
sich noch das Buttonproblem, und schlimmer: Tabelle("Name") (d.h. der
Tb.-Index) wird nicht erkannt. Damit ist kein Sheets.Count mehr möglich.

Leider half das Office- Update (letzten Dienstag) auch nichts.

Aber ok, da ist nur lahmes Internet (Stick) möglich und ich lebe erstmal
damit, solche Codes auf dem Win7- Rechner auszuführen...

Auf der Simu- Mappe gab es keine Update- Fehler, weshalb ich die so richtig
zum entspannen hernehme!

Hans
Claus Busch
2015-01-11 18:31:12 UTC
Permalink
Hallo Hans,
Post by Hans Alborg
Auf der Simu- Mappe gab es keine Update- Fehler, weshalb ich die so richtig
zum entspannen hernehme!
du konntest also nach wie vor ActiveX-Steuerelemente einfügen? Hast du
mal bemerkt, dass in einer neuen Mappe das erste eingefügte Element den
Index 21 hat anstatt 1? Und dass dann jedes Element von 21 ab
hochgezählt wird? Bei einigen hat sich auch der Index der bereits
erstellten Elemente geändert, wodurch dann der Code die Elemente nicht
mehr fand.
Schau mal hier, da ist auch ein Hyperlink zu einem FixIt-Tool:
http://answers.microsoft.com/de-de/office/forum/office_2013_release-excel/fyi-dezember-update-kb2553154-kann-excel-2013/8343010f-4274-4835-8c78-e125485ec8d1


Mit freundlichen Grüßen
Claus
--
Vista Ultimate / Windows7
Office 2007 Ultimate / 2010 Professional
Hans Alborg
2015-01-11 22:19:18 UTC
Permalink
Hi Claus,

"Claus Busch" schrieb...
Post by Hans Alborg
Auf der Simu- Mappe gab es keine Update- Fehler, weshalb ich die so
richtig zum entspannen hernehme!
du konntest also nach wie vor ActiveX-Steuerelemente einfügen? Hast du mal bemerk...
Nene, ich hab in der Simu- Mappe wohl nur MSForms drin (Zufall), daher
betrifft es diese wohl nicht.
das erste eingefügte Element den Index 21 hat...
Hab ich schon 12-2014 gelesen und die Buttons haben ja auch die Macke
gehabt. Wie geschrieben laufen sie unter Win7 jetzt wieder (glaube, nach
löschen der 3 Dateien MSForms.exd im /Temp). Unter XP hilft aber alles
nichts bisher. Haben sie unter Win7 einen anderen Index als dieselbe Mappe
unter XP???
Ich bin mehr und mehr ein Freund davon, einfach Zellen zum anklicken zu
nehmen...auf Tabellen.
http://answers.microsoft.com/de-de/office/forum/office_2013_release-excel/fyi-dezember-update-kb2553154-kann-excel-2013/8343010f-4274-4835-8c78-e125485ec8d1
Das Tool löscht auch nur die .EXD- Dateien, aber gut, probier ich morgen am
XP- Rechner. Wichtiger ist das mit der Nichterkennung der Tabellenindizes.
Ich merke mir morgen mal die Fehlermeldung und teste mal eine
neugeschriebene Routine mit Sheets.Count.

Aber zum Thema:

ich hab in der Simu-Mappe mal nach Left und left getrennt gesucht:

Hier mit großem L wie es sein soll:
--------------------------------------------
.Borders(xlEdgeLeft).LineStyle
.End(xlToLeft).Column
Selection.Delete Shift:=xlToLeft
CopyOrigin:=xlFormatFromLeftOrAbove

In Kommentarzeilen hat sich nichts verändert:
-----------------------------------------------------------
'If Left(Cells(2, mynr + 5).Value, 5) =

Hier beides: Left als Variable und left als Befehl:
----------------------------------------------------------
myR_Left = Cells(100, myNr).left

und kleingeschrieben:
--------------------------------------------
.left = Cells(myZeile, mySpalte).left + 55
If left(Cells(
Brücke = left(Brücke, Len(Brücke) - 2)
Me.left = (Application.Width - Me.Width) /
If .Shapes(Fzg).left > Fzg_Pos Then

-jeder Fund (Suchfunktion) steht für Millionen Gleichartige (ok, gefühlt),
aber nur in dieser Mappe. Eine Abspeicherung der letzten Version hat noch
normale Befehle! Was ist in dieser Mappe neu? Eine vorhandene Userform bekam
etliche Steuerelemente zusätzlich und wird nun für zwei Zwecke benutzt.
Dafür werden die jew. Steuerelemente Visible=True bzw. False gesetzt. Plus
entsprechendem Code dazu natürlich.

Naja, damit wird die Fehlersuche doch schon begrenzt. Mal gucken, ob diese
eine Mappe sich überhaupt zurückversetzen läßt (auf "Left").

Hans
Ulrich Möller
2015-01-11 23:08:19 UTC
Permalink
Post by Hans Alborg
Hi Claus,
"Claus Busch" schrieb...
Post by Hans Alborg
Auf der Simu- Mappe gab es keine Update- Fehler, weshalb ich die so
richtig zum entspannen hernehme!
du konntest also nach wie vor ActiveX-Steuerelemente einfügen? Hast du mal bemerk...
Nene, ich hab in der Simu- Mappe wohl nur MSForms drin (Zufall), daher
betrifft es diese wohl nicht.
das erste eingefügte Element den Index 21 hat...
Hab ich schon 12-2014 gelesen und die Buttons haben ja auch die Macke
gehabt. Wie geschrieben laufen sie unter Win7 jetzt wieder (glaube,
nach löschen der 3 Dateien MSForms.exd im /Temp). Unter XP hilft aber
alles nichts bisher. Haben sie unter Win7 einen anderen Index als
dieselbe Mappe unter XP???
Ich bin mehr und mehr ein Freund davon, einfach Zellen zum anklicken
zu nehmen...auf Tabellen.
http://answers.microsoft.com/de-de/office/forum/office_2013_release-excel/fyi-dezember-update-kb2553154-kann-excel-2013/8343010f-4274-4835-8c78-e125485ec8d1
Das Tool löscht auch nur die .EXD- Dateien, aber gut, probier ich
morgen am XP- Rechner. Wichtiger ist das mit der Nichterkennung der
Tabellenindizes. Ich merke mir morgen mal die Fehlermeldung und teste
mal eine neugeschriebene Routine mit Sheets.Count.
--------------------------------------------
.Borders(xlEdgeLeft).LineStyle
.End(xlToLeft).Column
Selection.Delete Shift:=xlToLeft
CopyOrigin:=xlFormatFromLeftOrAbove
-----------------------------------------------------------
'If Left(Cells(2, mynr + 5).Value, 5) =
----------------------------------------------------------
myR_Left = Cells(100, myNr).left
--------------------------------------------
.left = Cells(myZeile, mySpalte).left + 55
If left(Cells(
Brücke = left(Brücke, Len(Brücke) - 2)
Me.left = (Application.Width - Me.Width) /
If .Shapes(Fzg).left > Fzg_Pos Then
-jeder Fund (Suchfunktion) steht für Millionen Gleichartige (ok,
gefühlt), aber nur in dieser Mappe. Eine Abspeicherung der letzten
Version hat noch normale Befehle! Was ist in dieser Mappe neu? Eine
vorhandene Userform bekam etliche Steuerelemente zusätzlich und wird
nun für zwei Zwecke benutzt. Dafür werden die jew. Steuerelemente
Visible=True bzw. False gesetzt. Plus entsprechendem Code dazu natürlich.
Naja, damit wird die Fehlersuche doch schon begrenzt. Mal gucken, ob
diese eine Mappe sich überhaupt zurückversetzen läßt (auf "Left").
Hans
Hallo Hans,

ein ähnliches Phänomen habe ich auch schon in anderen VBA-IDE Umgebungen
beobachtet, insbesonders dann, wenn viele Änderungen am Sourcecode
gemacht wurden. Eine genaue Erklärung dafür habe ich nie gefunden. Um
wieder in den Ursprungszustand zu gelangen, habe ich immer alles in
Textdateien exportiert und anschließend importiert.
Vielleicht hilft auch eines dieser Tools weiter:
http://www.appspro.com/Utilities/CodeCleaner.htm
http://orlando.mvps.org/VBADecompilerMore.asp?IdC=Download1#Download1

Beim unteren Link kann auch noch etwas über pcode, decompile und compile
in vba nachgelesen werden - leider aber nur in Englisch.

Grüße

Ulrich
Jochen Walerka
2015-01-12 04:57:28 UTC
Permalink
Post by Ulrich Möller
ein ähnliches Phänomen habe ich auch schon in anderen VBA-IDE Umgebungen
beobachtet, insbesonders dann, wenn viele Änderungen am Sourcecode
gemacht wurden. Eine genaue Erklärung dafür habe ich nie gefunden. Um
wieder in den Ursprungszustand zu gelangen, habe ich immer alles in
Textdateien exportiert und anschließend importiert.
Ich hätte wohl erst alle Posts lesen müssen. Einen ähnlichen Vorschlag habe ich
eben gemacht.
Eine Erklärung habe ich auch nicht. Aber das ist das Liebenswerte an Excel.

Jo
Hans Alborg
2015-01-12 23:19:11 UTC
Permalink
Hallo ihr,

Jochen Walerka schrieb...
Post by Ulrich Möller
ein ähnliches Phänomen habe ich auch schon in anderen VBA-IDE Umgebungen
beobachtet, insbesonders dann, wenn viele Änderungen am Sourcecode
gemacht wurden.
Was? (VBA-) Sourcecode? Daran schraubt ja evtl. MSoft mit seinen Updates,
aber ich doch nicht!

@ Ulrich, die Tools sehe ich mir auf jeden Fall mal an. Ich habe eh den
Eindruck daß mir VBA nicht immer sagen kann wo der Schuh drückt.
Post by Ulrich Möller
Post by Jochen Walerka
Ich hätte wohl erst alle Posts lesen müssen. Einen ähnlichen Vorschlag
habe ich eben gemacht.
Eine Erklärung habe ich auch nicht. Aber das ist das Liebenswerte an Excel.
Naja. Mein Stand bisher: ich bin nicht groß zur Fehlersuche gekommen. Aber
weil ich viel zwischenspeichere, ist das bereits V61 des Projekts. Und die
Version 60 war noch normal!
Das bissel was dazugekommen ist seitdem, kann ich zur Not in die V60
übertragen und sehen, was passiert.

Auch heute was Kurioses gefunden: die Änderung der V61 betrifft eine
Userform. Da setze ich je Nutzung relevande Objekte auf sichtbar oder
unsichtbar.
Dabei (sowas hab ich zum ersten Mal gemacht) liegen die Objekte (Buttons,
Textboxen) übereinander.
War nicht so schlau: ich hab jetzt einen halbhohen Button! Die untere Hälfte
ist "verschwunden", obwohl natürlich der komplette Button "Visible" gesetzt
ist.
Aber: das passiert nur bei diesem Einen, da sehe ich das Experiment noch
nicht als gescheitert an...

Hans
Jochen Walerka
2015-01-12 04:51:36 UTC
Permalink
Hallo Hans,

probier mal folgendes:
alle Sheets in eine neue Datei kopieren. Den Code exportieren und in die neue
Datei importieren. Speichern und ausprobieren.
Falls das funktioniert, frag mich nicht, wieso.

Jo
Carlos Naplos
2015-01-14 15:16:39 UTC
Permalink
Hallo Hans

Ich habe mal versucht, Dein Phä­no­men zu konstruieren.

Dazu habe ich die Funktion mit einer neuen Funktion "left"
überschrieben, die dieselben Werte wie die Original-VBA-Funktion liefert:

Function left(s As String, l As Long) As String
left = VBA.left(s, l)
End Function

Sub links()
Range("B1") = left(Range("A1"), 7) ' neue Funktion
Range("C1") = VBA.left(Range("A1"), 7) ' Original-Funktion
End Sub

Nun werden alle "left" klein geschrieben.

lg Carlos
Post by Hans Alborg
Hallo.
<VBA 2007>
Tja. Meine Mappe (Simu...) kann noch mit "Left" umgehen, aber wenn ich
die eingetippte Codezeile verlasse bleibt "Left" kleingeschrieben.
Andere "Lefts", schon vor langem programmiert, stehen auch klein da.
Das gilt nicht nur für "Left(String,n)", sondern z.B. auch für
"Userform.Textbox.Left = 50".
Right wird richtig umgesetzt: erster Buchstabe wird groß.
In einer neuen (kleinen) Testmappe wird aus "left(...)" wieder
"Left(..." wie es sich gehört.
Muß ich jetzt in der großen Mappe auf Fehlersuche gehen (wie?) oder
Excel "reparieren" oder das einfach so nehmen?
Ich glaub mit MS' Updates hat das ausnahmsweise nichts zu tun.
Hans
Lesen Sie weiter auf narkive:
Loading...