| VBA-Editor (VBE) | Home |
![]()
| Seiteninhalt Möchten Sie mehr über den VBA-Editor wissen, insbesondere über seine Spezialitäten, ungewöhnlichen Verhaltensweisen, technischen Hintergründe und undokumentierten Bugs? |
Leserprofil Excel-Anwender und VBA-Programmierer |
![]()
| Testen Sie Ihr Wissen! | |
| Möchten Sie herausfinden, wie gut Sie die VBE tatsächlich kennen? Oder möchten Sie anhand den Antworten eines Experten-Tests viel Neues über die VBE erfahren? Dann sollten Sie unbedingt den VBE-Wissenstest lösen. Die Seite mit dem Wissenstest "Wie gut kennen Sie die VBE?" finden Sie hier. |
![]()
Allgemeines über die VBE
VBE-
und VBA-Systemdateien (Office 97)
VBE-
und VBA-Systemdateien (Office XP)
Eine VBE
für alle Office-Programme
"Microsoft
Visual Basic 5.0"-Optionen im Registry-Zweig "VBA"
Häufig gestellte Fragen
Wie
kann ich den Zugriff auf die VBE sperren?
Welche
Auswirkungen besitzt die End-Anweisung?
Wissenstest: Wie gut kennen Sie die
VBE?
Links und Downloads
Bugs und Probleme
Nicht in der MS
Knowledge Base beschriebene Bugs und Probleme
Weitere Informationen
Downloads
VBE- und VBA-Systemdateien (Office 97)
Die VBE von Microsoft Office 97 verwendet mehrere DLLs, wobei allerdings je nach Office-Programm nicht immer alle DLLs geladen werden. Bei Excel 97 wird beispielsweise die VBE bereits beim Start der Office-Anwendung in den Speicher geholt. Bei Word 97 dagegen werden die DLLs erst beim Öffnen des VBA-Editors geladen (Anmerkung des Autors: Dieses Verhalten habe ich bei meiner Arbeitsstation beobachtet, was bedeutet, dass dieses Verhalten nicht zwangläufig überall stimmen muss).
Diese DLL-Dateien werden beim Programmstart von der VBE geladen:
| DLL-Datei | Version | Bezeichnung |
| VBE.DLL | Version 5.00.4121 | Visual Basic Design Time Environment |
| VBA332.DLL | Version 3.0.7019 | Visual Basic for Applications Development Environment |
| VBA3DE.DLL | Version 5.00.3509 | Internationale Ressourcen für Visual Basic-Umgebung |
| VBA332ME.DLL | Version 2.1.3 | VBA: Middle East Support |
| FM20.DLL | Version 2.01 | Microsoft® Forms DLL |
Standardmässig befinden sich die Dateien im Verzeichnis
ROOT:\PROGRAMME\GEMEINSAME DATEIEN\MICROSOFT SHARED\VBA
mit Ausnahme der Datei FM20.DLL, die sich im Windows-Systemverzeichnis befindet.
Diese Dateien werden bei Microsoft Office 97 für VBA installiert:
Program Files\Common Files\Microsoft Shared\Vba Folder ------------------------------------------------------ File name Size (Bytes) ---------------------------------------------------------------------- Fm20.aw 197,717 Fm20.cnt 19,691 Fm20.hlp 497,789 Mscreate.dir 0 Vba332.dll 1,596,688 Vba3en.dll 145,680 Vbacv10.dll 439,808 Vbe.dll 745,232 Vbeext1.olb 31,744 Veen3.aw 210,191 Veena3.aw 209,460 Veencn3.cnt 3,581 Veencn3.hlp 119,327 Veendf3.hlp 76,366 Veenhw3.cnt 2,390 Veenhw3.hlp 55,589 Veenlr3.cnt 21,576 Veenlr3.hlp 1,052,458 Veenmc3.hlp 24,734 Veenob3.cnt 5,690 Veenob3.hlp 149,149 Veenui3.cnt 14,472 Veenui3.hlp 366,174
VBE- und VBA-Systemdateien (Office XP)
Folgende DLLs werden nicht installiert, wenn VBA von Office XP deaktiviert wurde:
Eine VBE für alle Office-Programme
Beschreibung folgt...
"Microsoft Visual Basic 5.0"-Optionen im Registry-Zweig "VBA"
Sollten Sie einmal auf die Idee kommen, den Registry-Zweig "VBA" zu löschen, da Sie beispielsweise sämtliche MS Office-Anwendung deinstalliert haben, dann sollten Sie aufpassen! Falls Sie nämlich die Entwicklungsumgebung Visual Basic 5.0 verwenden und weiterhin verwenden wollen, darf der Zweig "VBA" nicht komplett entfernt werden. Visual Basic - oder genauer gesagt die VB-Entwicklungsumgebung (VBIDE) - speichert gewöhnlich seine Einstellungen im Zweig "/Visual Basic/5.0". Aber eben nicht sämtliche Einstellungen! Mehrere Optionen sind im Zweig "VBA/Microsoft Visual Basic" abgelegt. Das bedeutet, dass nur die Unterzweige von "VBA" (z.B. "Excel" und "Office") mit Ausnahme von "Microsoft Visual Basic" gelöscht werden dürfen.

Abbildung: Ausschnitt aus der Windows Registry
Die Betriebsarten
Die VBE kann in zwei verschiedenen Betriebsarten verwendet werden: Im Run Mode
(Ausführungsmodus) und im Design Mode (Entwurfsmodus).
Die VBE kennt zwei Betriebsarten:
- Ausführungsmodus (Run Mode)
- Entwurfsmodus (Design Mode)
Die Ausführungsmodi
Der Ausführungsmodus seinerseits kennt ebenfalls drei Modi:
- Laufzeitmodus (oft ausgedrückt mit "während der Laufzeit")
- Haltemodus ("während der Haltezeit")
- Beendetmodus (der Modus, bei dem keine Programmausführung stattfindet)
(Anmerkung des Autors: Der Begriff "Beendetmodus" stammt von mir,
da für diesen Modus keine offizielle Bezeichnung existiert.)
Die VBE-Modi anhand eines Objektes aus der realen Welt erklärt
Damit man sich die verschiedenen Modi besser vorstellen kann, habe ich probiert, die VBE-Modi auf ein bekanntes Objekt aus der realen Welt zu adaptieren. Denn insbesondere der Unterschied zwischen Entwurfsmodus und Beendetmodus ist zu Beginn nicht leicht erkennbar.
| VBE | Personenwagen | ||
| Modus | Merkmale (Beispiele) | Modus | Merkmale (Beispiele) |
| Entwurfsmodus | Projekt zurückgesetzt Variablen zurückgesetzt Ereignisse deaktiviert ActiveX-Objekte bearbeitbar |
Motor aus, Zündung aus (z.B. Parkplatz/Garage) |
Nicht betriebsbereit Abgestellt Instrumente zeigen nichts an |
| Beendetmodus | Projekt nicht zurückgesetzt Variablen nicht zurückgesetzt Ereignisse aktiviert ActiveX-Objekte nicht bearbeitbar |
Motor aus, Zündung ein (z.B. kurz vor/nach Fahrt) |
Abfahrbereit Instrumente zeigen etwas an |
| Haltemodus | Programmausführung unterbrochen Fortsetzung jederzeit möglich |
Motor ein, Wagen steht (z.B. rote Ampel, Stop) |
Halt |
| Laufzeitmodus | Programm läuft | Motor ein, Wagen fährt | Fahrt |
Da ehrlich gesagt auch die Kapitel über die VBE in der VBA-Editor Online-Hilfe nicht gerade Klarheit darüber verschaffen, welche Betriebsarten und Modi existieren, sollten interessierte VBA-Programmierer die Beschreibung zur Mode-Eigenschaft (ein Property des VBProject-Objektes) näher ansehen.
Die Mode-Eigenschaft des VBProjekt-Objektes
Mit dem Mode-Property lässt sich ermitteln, in welchem Zustand
sich ein Projekt gerade befindet.
Beispiel
Geben Sie im Direktfenster die folgende Anweisung ein:
?Application.VBE.ActiveVBProject.Mode = vbext_vm_BreakMode
| Konstante | Wert |
Beschreibung |
| vbext_vm_RunMode | 0 | Das angegebene Projekt befindet sich im Ausführungsmodus. |
| vbext_vm_BreakMode | 1 | Das angegebene Projekt befindet sich im Haltemodus. |
| vbext_vm_DesignMode | 2 | Das angegebene Projekt befindet sich im Entwurfsmodus. |
?Application.VBE.ActiveVBProject.Mode = vbext_vm_Design
Wie kann ich den Zugriff auf die VBE sperren?
Beschreibung
Es existiert in Excel 97 und Excel 2000 keine direkte Möglichkeit, den VBA-Editor
auszublenden oder zu sperren. Mit einer API-Funktion kann man jedoch das Hauptfenster des
VBA-Editors blockieren. Hier der entsprechende VBA-Programmcode dazu:
Modul (Deklarationsbereich)
Declare Function LockWindowUpdate Lib
"user32" (ByVal hwndLock As Long) As Long
Arbeitsmappe
Private Sub Workbook_Open()
LockWindowUpdate Application.VBE.MainWindow.HWnd
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
LockWindowUpdate 0&
End Sub
![]()
Welche Auswirkungen besitzt die End-Anweisung?
Hier ein Auszug aus der Onlinehilfe:
Die End-Anweisung setzt bei ihrer Ausführung alle Variablen auf Modulebene sowie die statischen lokalen Variablen in allen Modulen zurück. Wenn Sie die Werte dieser Variablen noch benötigen, verwenden Sie statt dessen die Stop-Anweisung. Die Variablenwerte bleiben dann erhalten, und Sie können die Ausführung fortsetzen.
Anmerkung
Die End-Anweisung beendet die Ausführung von Code sofort, ohne die
Ereignisse Unload, QueryUnload oder Terminate oder anderen Visual Basic-Code aufzurufen.
Code, den Sie in den Ereignissen Unload, QueryUnload und Terminate von Formularen und
Klassenmodulen plaziert haben, wird nicht ausgeführt. Objekte, die aus Klassenmodulen
erstellt wurden, werden zerstört, Dateien, die mit der Open-Anweisung geöffnet wurden,
werden geschlossen und Speicher, der von Ihrem Programm verwendet wurde, wird wieder
freigegeben. Objektverweise, die von anderen Programmen verwendet werden, werden
ungültig.
Die End-Anweisung stellt eine Möglichkeit dar, das Anhalten des Programms zu erzwingen. Für die normale Beendigung eines Visual Basic-Programms sollte Sie alle Formulare entladen. Ihr Programm wird geschlossen, wenn keine weiteren Programme mehr auf Objekte verweisen, die von Ihren öffentlichen Klassenmodulen bereitgestellt wurden, und kein Code mehr ausgeführt wird.
Was bedeuten die beim Öffnen eines Projektes angezeigten Fehlermeldungen?
Beschreibung
Folgt...
Form File Loading Errors
http://msdn.microsoft.com/library/en-us/vbcon98/html/vbconloadingsavingforms.asp
Form Load Error Log Messages
http://msdn.microsoft.com/library/en-us/vbcon98/html/vbconerrorlogmessages.asp
Wissenstest: Wie gut kennen Sie die VBE?
In Kürze erscheint ein umfassender Test mit vielen Fragen über die VBE.
Eine Vorab-Version dieses Wissenstests können Sie bereits jetzt beziehen. Klicken Sie dazu hier.
Tipps und Tricks zum effizienten Arbeiten in der VBE
Gruppieren von Steuerelementen
Gruppieren von Steuerelementen (gut für Verschieben, Grösse ändern etc.)
Steuerelement-Gruppe in Werkzeugsammlung aufnehmen

Abbildung: Werkzeugsammlung mit Steuerelement-Gruppe (Symbol
ganz rechts in der zweiten Reihe)
VBE-Merkmale von Projekten abfragen
Abfrage, ob die Werkzeugsammlung bei Öffnen des UserForm-Designers bzw. bei
Aktivieren des Designer-Fensters eingeblendet wird:
MsgBox UserForm1.ShowToolbox
?Application.VBE.VBProjects("xlVBAPrj_Test").VBComponents("basGlobal").CodeModule.CodePane.CodePaneView = vbext_cv_FullModuleView
Fehlermeldung "Kann nicht aufzeichnen"


Fehlermeldung "Jetzt kann nicht in den Haltemodus gewechselt werden"

Diese Meldung trat auf während dem Kopieren eines Arbeitsblattes. Es waren keine Haltepunkte im Code gesetzt.
VBE-Fenster schliessen
Application.VBE.MainWindow.Visible = False
Standard Code-Module

?ActiveWorkbook.Modules.Count
2
Obwohl das Projekt fünf Module enthält, zeigt die Abfrage mit Count das Resultat "2".
Grund: Zwei der fünf Module wurden mit Add hinzugefügt; die anderen drei über den Menübefehl "Einfügen/Modul" des VBA-Editors.
ActiveWorkbook.Modules.Add
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.
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.
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
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
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
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
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
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.
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
XL2000: Visual Basic for Applications Project
Replaced by Unexpected Project
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q215578
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
27.01.2006 / 21:30 Uhr
© 2002-2006 by Philipp von Wartburg, CH-8916 Jonen
Alle Rechte vorbehalten