Bugs im VBA-Editor (VBE)
![]()
| Seiteninhalt Möchten Sie mehr über den VBA-Editor wissen, insbesondere über seine Bugs? Auch der VBA-Editor besitzt ein paar interessante Bugs, Probleme und Spezialitäten. Lesen Sie auf dieser Seite mehr dazu. |
Leserprofil Excel-Anwender mit Programmier-Erfahrung und VBA-Programmierer |
![]()
Allgemeines über Bugs im VBA-Editor
Undokumentierte Bugs und Probleme
Dokumentierte Bugs und Probleme
Allgemeines über Bugs im VBA-Editor
Im VBA-Editor haben sich ein verschiedene Fehler eingeschlichen, die in der Knowledge Base von Microsoft dokumentiert und somit weitgehend bekannt sind. Allerdings gibt es auch ein paar interessante, nicht dokumentierte Bugs. Auf dieser Seite werden die wichtigsten Fehler beschrieben und Lösungen vorgestellt.
Undokumentierte Bugs und Probleme
BUG: Geöffnetes Codefenster wird nicht aktiviert (VBE01)
Summary
Der Fokus verbleibt auf einem Codefenster, welches infolge der eingeschalteten
Editor-Option "Projektausblendung schliesst Fenster" geschlossen wurde. Korrekt
müsste ein geöffnetes Codefenster eines anderen Projektes aktiviert werden. Auf jeden
Fall müsste ein Codefenster eines anschliessend eingeblendeten Projektes den Fokus
erhalten. Dies ist aber nicht der Fall.
Summary
Wenn Sie das Bild eines Werkzeugsammlung-Steuerelementes anpassen und dann
das Steuerelement mit Drag and Drop von einer Werkzeugsammlung-Seite auf eine andere Seite
verschieben, erhält das Steuerelement wieder
sein ursprünglichen Bild. Das Control verliert das aktuelle, angepasste Bild und zeigt
wieder das in der ocx-Datei des Controls gespeicherte Default-Bild. Das Bild geht auch
beim Kopieren-Vorgang verloren, was allerdings nicht ganz so schlimm ist, da das
Original-Control ja noch das angepasste Bild besitzt.
Beispiel
Fügen Sie der Werkzeugsammlung eine neue Seite hinzu. Ändern Sie jetzt das Bild
des Steuerelementes "Listenfeld" (rechte Maustaste drücken während Mauszeige
über dem Control steht, im Kontextmenü den Befehl "Anpassen: Listenfeld"
ausführen, im "Anpassen"-Fenster die Schaltfläche "Bearbeiten"
klicken). Wenn Sie nun das angepasste Control "Listenfeld" auf die neue Seite
verschieben, geht das von Ihnen gezeichnete Bild verloren.
Lösung
Wenn Sie angepasste Bilder von Steuerelementen nicht verlieren möchten, sollten
Sie ein Control weder verschieben noch kopieren. Es gibt einen anderen Weg:
Exportieren und importieren Sie die Werkzeugsammlung-Seite mit den angepassten
Controls. Dadurch erhalten Sie eine identische Kopie der gesamten Seite mit allen Controls
inklusive ihren bearbeiteten Bildern (Anmerkung: Es werden auch die Control-Bilder in die
Exportdatei geschrieben). Löschen Sie nach dem Import alle Controls von der neuen Seite,
die nicht benötigt werden bzw. doppelt vorhanden sind.
BUG: UserForm exportieren überschreibt existierende frx-Datei ohne Warnung (VBE03)
Summary
Wird ein Benutzerformular exportiert, erhält die Exportdatei
standardmässig den Namen des Formulares (man kann einen anderen Namen wählen) sowie die
Datei-Endung "frm". Beim Exportieren wird automatisch eine zusätzliche Datei
(gleicher Name wie die frm-Datei mit der Endung "frx") für die Binär-Daten des
Formulares generiert. Löscht man nach dem Export die frm-Datei, jedoch nicht die
entsprechende frx-Datei, wird bei erneutem Formular-Export wieder der Dateiname aus
Formularname und dem Suffix "frm" gebildet. Führt man den Export mit dem
vorgegebenen Dateinamen aus (eine frm-Datei mit dem vorgegebenen Namen gibt es ja wegen
der Löschung nicht mehr), wird die Generierung der neuen frx-Datei die noch existierende
frx-Datei ohne Warnung überschrieben.
Lösung
Prüfen Sie vor dem Exportieren, ob der Zielordner allenfalls bereits eine Datei
mit gleichem Namen und Endung "frx" enthält. Wenn Sie eine bereits vorhandene
frx-Datei behalten möchten, sollten Sie diese umbenennen. Generell sollten Sie jedoch
keine frm-Datei löschen, ohne auch die dazugehörende frx-Datei ebenfalls gleich
mitzulöschen.
BUG: Mit Drag & Drop exportierte UserForm generiert falsch benannte frx-Datei (VBE04)
Summary
Wenn eine UserForm mit Drag and Drop exportiert wird (durch Ziehen des
Formular-Moduls aus dem Projekt-Explorer auf beispielsweise den Windows Desktop), erhält
die Exportdatei automatisch den Namen des Benutzerformulares und die Datei-Endung
"frm". Beim Exportieren wird automatisch eine zusätzliche Datei (gleicher Name
wie die frm-Datei mit der Endung "frx") für die Binär-Daten des Formulares
generiert. Wenn auf dem Desktop bereits eine Datei mit dem gleichen UserForm-Namen und der
Endung "frx" existiert, eine entsprechende Datei mit der Endung "frm"
jedoch nicht, wird nicht die existierende frx-Datei überschrieben, sondern eine neue
Datei mit dem gleichen Namen und dem Zusatz "(2)" generiert. In der Exportdatei
(die im Textformat vorliegt) wird aber auf die Datei ohne den Zusatz "(2)"
verwiesen. Die frm- und die frx-Datei passen somit nicht zusammen, was bedeutet, dass die
exportierten Daten unbrauchbar sind.
Beispiel
Das Benutzerformular "AppInfo" wird mit Drag and Drop auf den
Desktop gezogen, wodurch automatisch die beiden Dateien "AppInfo.frm" und
"AppInfo.frx" generiert werden. Jetzt wird die Desktop-Datei
"AppInfo.frm" gelöscht; die frx-Datei bleibt stehen. Wenn nun das Formular
"AppInfo" erneut mit Drag and Drop auf den Desktop exportiert wird, wird eine
neue Datei "AppInfo.frm" erstellt und, da es die Datei AppInfo.frx bereits gibt,
eine neue Binärdatei namens "AppInfo (2).frx". Die exportierte Daten sind somit
unbrauchbar, da die frx-Datei nicht den gleichen Namen wie die frm-Datei besitzt (Import
ist nicht mehr möglich). Öffnet man die frm-Datei (Textformat) in einem Texteditor (z.B.
Notepad), so steht auf Zeile 8 die frx-Referenz "OleObjectBlob =
"AppInfo.frx":0000". Wie man unschwer erkennt, wird auf
"AppInfo.frx" anstatt korrekterweise auf "AppInfo (2).frx"
referenziert.
Lösung
1. Die Datei "AppInfo.frx" in
"AppInfo_Alt.frx" und anschliessend die Datei "AppInfo (2).frx" in
"AppInfo.frx" umbenennen. (Beste Lösung)
2. Mit Texteditor Referenz in der frm-Datei von "AppInfo.frx" auf "AppInfo
(2).frx" ändern.
3. UserForm-Export anstatt mit Drag and Drop nur noch über Menübefehl
"Exportieren".
BUG: Lade-Fehlerprotokoll zeigt nur die ersten 8 Zeichen des Formularnamens (VBE05)
Summary
Schlägt das Laden (z.B. beim Importieren) einer UserForm in ein VBA-Projekt fehl,
wird von der VBE ein Logfile generiert, in welchem das betroffene Modul und der genaue
Fehlertext festgehalten wird. Beim Modulnamen wird aber nicht der vollständige Name
sondern nur die ersten 8 Zeichen angezeigt.
Beispiel
In der Log-Datei "frmCellFormat.log" steht der Text "Zeile 2: Der
Name frmCellF des Formulars [...]". Der Modulname ist abgeschnitten, wie man leicht
erkennen kann.
BUG: VBE-Fenstertitel zeigt den Namen des falschen Projektes/Moduls (VBE06)
Summary
Beschreibung folgt... (In der Titelleiste des
VBE-Hauptfenster wird zeitweise ein falscher Projekt-/Modulname angezeigt).
Beispiel
Beispiel folgt...
BUG: Undo von Text-Drag & Drop (aus Code- nach Direktfenster) löscht den eingefügten Text nicht (VBE07)
Summary
Beschreibung folgt... (Einseitiges Undo, weil
Direktfenster kein Undo unterstützt).
Beispiel
Beispiel folgt...
BUG: Menübefehl "Entfernen (Entf)" gesperrt, obwohl Entfernen-Taste benutzt werden kann bzw. darf (VBE08)
Summary
Beschreibung folgt... (Kein Projekt geöffnet und dann
Text in Direktfenster löschen).
Beispiel
Beispiel folgt...
Problem: Bearbeiten-Funktionen (Ausschneiden, Kopieren, Einfügen) im Direktfenster gesperrt (VBE09)
Summary
Beschreibung folgt... (Kein Projekt geöffnet,
Text-Bearbeitung in Direktfenster nicht möglich, obwohl Eingaben zugelassen sind, z.B.
"?Application.Version").
Problem: Abfrage nach aktiviertem Entwurfsmodus eines Projektes funktioniert nicht (VBE10)
Summary
Das VBProjekt-Objekt besitzt eine Eigenschaft "Mode", mit der der
Zustand/Modus eines Projektes abgefragt werden kann. Die Eigenschaft ist read only. Die
Abfrage, ob der Entwurfsmodus eines Projektes aktiviert ist, funktioniert allerdings
nicht, d.h. die Abfrage, z.B. durch "?Application.VBE.ActiveVBProject.Mode =
vbext_vm_Design" liefert immer das Ergebnis "Falsch", auch wenn sich das
Projekt gerade im Entwurfsmodus befindet (Hinweis: Verweis auf Objektbibliothek
"Microsoft Visual Basic for Applications Extensibility" muss gesetzt sein). Die
Abfrage kann nicht funktionieren, da die Ausführung der Abfrage, d.h. das Drücken der
Eingabe-Taste im Direktfenster die VBE bzw. das Projekt vorübergehend in den
Laufzeitmodus (vbext_vm_Run) setzt. Im Zeitpunkt der Abfrage befindet sich somit ein
Projekt nie im Entwurfsmodus.
INFO: Unbenutzte Schlüssel im Registry-Zweig der VBE (VBE11)
Summary
Die VBE besitzt mehrere Optionen, die nicht benutzt werden und daher auch
im Optionen-Dialog nicht aufgeführt sind. Dennoch sind diese Optionen wie die anderen
VBE-Einstellungen in der Windows Registry als Schlüssel eingetragen. Eine dieser Optionen
heisst "SaveBeforeRun" und sollte eigentlich festlegen, ob das
aktuelle VBA-Projekt vor der Ausführung zuerst automatisch gespeichert wird. Es ist
anzunehmen, dass die VBE-Entwickler diese Speichern-Feature implementieren wollten und den
entsprechenden Schlüssel schon mal in der Registry vorsahen, allerdings später diese
Funktionalität doch nicht mehr realisieren konnten. Ebenfalls nicht verwendet werden die
Optionen-Schlüssel "BackgroundProjectLoad" und "UpgradeVBX".
INFO: Falsche Information im Onlinehilfe-Thema "Projekt oder Bibliothek nicht gefunden" (VBE12)
Summary
Die Beschreibung zur Fehlermeldung "Projekt oder Bibliothek nicht
auffindbar" enthält eine falsche Information. Hier der betroffene Ausschnitt aus der
Onlinehilfe:
"Sie können Ihren Code erst ausführen, nachdem alle Verweise aufgelöst
sind. Für diesen Fehler gibt es die folgenden Ursachen und Lösungen:
- Ein referenziertes Projekt wurde nicht gefunden, oder eine referenzierte
Objektbibliothek für die Sprache des Projekts wurde nicht gefunden.
Nichtaufgelösten Verweisen wird die Zeichenfolge "FEHLT:"
im Dialogfeld Verweise vorangestellt. Wenn Sie den fehlenden Verweis auswählen, erscheint
der Pfadname und die Sprache des fehlenden Projekts oder der fehlenden Bibliothek.
[...]"
Die einem fehlerhaften Verweis vorangestellte Zeichenfolge wird mit "FEHLT:" angegeben. Das ist nicht korrekt. Die tatsächlich verwendete Zeichenfolge lautet "NICHT VORHANDEN:".
Dokumentierte Bugs und Probleme
Excel / Office
XL97/OFFICE97: Public/Global Variables Not
Maintained After Error
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q213248
Dieser Artikel beschreibt das Verhalten der VBE, bei dem bei Auftreten
eines Fehlers sämtliche Variablen zurückgesetzt werden.
XL97: Crash Saving Workbook If Module Name Contains
Equal Sign
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q159877
Dieser Artikel beschreibt ein seltenes Speichern-Problem.
OFFICE97:
Error Messages When Editing, Running, or Recording VBA Macros in Office 97 Application on
Windows 2000
When a user accesses VBA for the first time, VBA creates a file named MSForms.exd
in the user's temporary folder. This file is a type library that VBA caches for a COM
object and is required for FM20/MSForms to function correctly. Once VBA creates the type
library file, it then attempts to register it; if the user does not have write access to
required registry keys, the registration fails. Consequently, VBA fails to initialize
properly and various errors might occur on attempts to use VBA in Office 97 applications.
http://support.microsoft.com/default.aspx?scid=kb;en-us;264743
XL97/XL2000: Compile Error Passing ParamArray
Error Message "Compile Error: Invalid ParamArray use"
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q159877
Dieser Artikel beschreibt eine höchst interessante Eigenheit von
Parameter-Arrays.
XL2000/OFFICE2000: Public Variables Are Not
Maintained After Error
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q155457
Dieser Artikel beschreibt das Verhalten der VBE, bei dem bei Auftreten
eines Fehlers sämtliche Variablen zurückgesetzt werden.
XL2000/OFFICE2000:
Module-Level Variables Are Reset to Their Default Values
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q231089
XL2000/OFFICE2000: The Watch Window Does Not Use the
Procedure Call Context
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q213739
Dieser Artikel informiert über mögliche Falschinformationen im
Überwachungsfenster, weil Überwachungspunkte die Aufrufeliste (Call Stack)
berücksichtigen.
XL2000/OFFICE2000: Modules Cannot Be Printed in
Color
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q213191
Dieser Artikel erläutert, dass der in Projekt-Modulen eingetragene
VBA-Programmcode nicht in Farbe ausgedruckt werden kann.
XL2000:
Cannot Import/Export UserForms Between VBA and Visual Basic
http://support.microsoft.com/default.aspx?scid=kb;en-us;213551
XL2000:
Grouped Drawing Objects Run Separate Macros
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q213233
XL2000/OFFICE2000:
Error Starting Visual Basic Editor with Outdated Oleaut32.dll
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q224315
XL2000/OFFICE2000:
OnAction Property Code Doesn't Run As Expected When You Click Command Button
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q280607
XL2000/OFFICE2000:
Endless Loop When Macro Modifies Files in a Folder
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q254889
Dieser Artikel beschreibt ein ungewöhnliches Verhalten der
Dir-Funktion, das zu einer Endlosschleife führt.
XL2000:
Excel Stops Responding When You Run VBA Macro Code That Displays a User Form
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q317850
XL2000: No
Error Message Returned to VBA on Failed Save
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q269521
Hier wird beschrieben, dass in bestimmten Situationen
VBA nicht meldet, dass die Mappen-Speicherung fehlschlug. Dieses Problem wurde in
Microsoft Office 2000 Service Pack 2 behoben.
XL2000: Visual Basic for Applications Project
Replaced by Unexpected Project
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q215578
XL2002:
Excel Functionality Missing When VBA Is Not Enabled
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q282847
Dieser Artikel informiert über nicht verfügbare Features bei
Deaktivierung von VBA.
Weitere Informationen: OFFICE2002:
Considerations for Disabling VBA in Office XP
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q287567
Weitere Informationen: OFFICE2002: Features Turned off When Visual Basic for
Applications Is Not Installed
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q281953
XL2002:
Unable to Record Macro and No VBA Projects Shown After You Install Office 2000
Error Message "Unable to record."
http://support.microsoft.com/default.aspx?scid=kb;en-us;293287
VBIDE / VBE
VB/VBE:
Determine the IDE Mode From an Add-In
http://support.microsoft.com/default.aspx?scid=kb;en-us;214743
VBA5/VBA6:
VBA6 Extensibility Library Breaks Code Written for VBA5 Extensibility Library
http://support.microsoft.com/default.aspx?scid=kb;en-us;244224
Macintosh
VBE WD98:
Underscore Characters Not Printed from Visual Basic Editor
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q177345
VBE
OFFICE98: Insertion Point Does Not Stay at End of Text in UserForm
http://support.microsoft.com/default.aspx?scid=kb;en-us;179941
OFFICE:
Overview of Visual Basic Editor Debugging Tools
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q165517
Dieser Artikel stellt die Debugging-Werkzeuge und -Funktionen der VBE
vor. Die Beschreibung gilt für Office 97, Office 2000 und Office 2002.
OFFICE:
Changes to Microsoft Visual Basic for Applications
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q161609
Dieser Artikel beschreibt alle gegenüber den Versionen Excel 95 und
älter vorgenommenen Änderungen und Erweiterungen im VBA-Editor. Die Beschreibung gilt
für Office 97, Office 2000 und Office 2002.
OFFICE2002:
Considerations for Disabling VBA in Office XP
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q287567
Dieser Artikel geht auf das Thema "Deaktivieren von VBA in
Office XP" ein.
Weitere Informationen: XL2002: Excel
Functionality Missing When VBA Is Not Enabled
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q282847
OFFICE2002:
Features Turned off When Visual Basic for Applications Is Not Installed
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q281953
Dieser Artikel geht auf das Thema "Deaktivieren von VBA in Office
XP" ein.
Weitere Informationen: XL2002: Excel
Functionality Missing When VBA Is Not Enabled
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q282847
![]()
Zuletzt aktualisiert am 21.04.2005
/ 18:30 Uhr
© 2002-2005 by Philipp von Wartburg, CH-8916 Jonen
Alle Rechte vorbehalten