VBA-Editor (VBE) Home Home

WB01727_.gif (1537 Byte)

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

WB01727_.gif (1537 Byte)

Tipp 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.

WB01727_.gif (1537 Byte)

Inhalt

  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"

  Die Betriebsarten der VBE

  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

Zum Seitenanfang


Allgemeines über die VBE

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:

Zum Seitenanfang

 

Eine VBE für alle Office-Programme

Beschreibung folgt...

Zum Seitenanfang

 

"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.

Registry-Zweige von VBA und VB
Abbildung: Ausschnitt aus der Windows Registry

Zum Seitenanfang

 


Die Betriebsarten der VBE

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

Zum Seitenanfang

 


Häufig gestellte Fragen

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

Zum Seitenanfang

 

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.

Zum Seitenanfang

 

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

 

Zum Seitenanfang

 


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.

Zum Seitenanfang

 


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

Werkzeugsammlung mit Steuerelement-Gruppe
Abbildung: Werkzeugsammlung mit Steuerelement-Gruppe (Symbol ganz rechts in der zweiten Reihe)

Zum Seitenanfang

 

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

Zum Seitenanfang

 

Fehlermeldung "Kann nicht aufzeichnen"

Fehlermeldung bei Makro-Aufzeichnung

Modul kann nicht ausgeführt werden

Zum Seitenanfang

 

Fehlermeldung "Jetzt kann nicht in den Haltemodus gewechselt werden"

Haltemodus nicht möglich

Diese Meldung trat auf während dem Kopieren eines Arbeitsblattes. Es waren keine Haltepunkte im Code gesetzt.

Zum Seitenanfang

 

VBE-Fenster schliessen

Application.VBE.MainWindow.Visible = False

Zum Seitenanfang

 

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

 

Zum Seitenanfang

 


Links und Downloads

Bugs und Probleme

XL97/OFFICE97: Public/Global Variables Not Maintained After Error
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q213248

arrow_r.gif (830 Byte) 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
arrow_r.gif (830 Byte) 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
arrow_r.gif (830 Byte) 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

arrow_r.gif (830 Byte) 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

arrow_r.gif (830 Byte) 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
arrow_r.gif (830 Byte) 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
arrow_r.gif (830 Byte) 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
arrow_r.gif (830 Byte) 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
arrow_r.gif (830 Byte) 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

Zum Seitenanfang

 

Weitere Informationen

OFFICE: Overview of Visual Basic Editor Debugging Tools
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q165517
arrow_r.gif (830 Byte) 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
arrow_r.gif (830 Byte) 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
arrow_r.gif (830 Byte) 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
arrow_r.gif (830 Byte) 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

Zum Seitenanfang

WB01727_.gif (1537 Byte)

Haben Sie Fragen, Anregungen oder einen Fehler entdeckt?
Mail senden an philipp_von_wartburg@yahoo.de

Zuletzt aktualisiert am 27.01.2006 / 21:30 Uhr
© 2002-2006 by Philipp von Wartburg, CH-8916 Jonen
Alle Rechte vorbehalten