Office Logo VBA  Zurück zur Hauptseite

VBA-Spezialthema "Auto-Makros"

      Allgemeines über das Thema "Auto-Makros"

      Interessantes über Auto-Makros

         Wer ruft ein Auto-Makro auf?

         Auto_Open-Makro auf der ersten Codezeile anhalten

         Aufruf eines Auto-Makros mit "Call" oder "RunAutoMacros"

         Ungewöhnliches Verhalten der RunAutoMacros-Methode

         Doppelte Deklaration einer Auto-Makro-Prozedur

 

      Das Auto_Open-Makro

      Das Auto_Close-Makro

 

      Zur Hauptseite

To Top

Diese Seite ist in Bearbeitung!

Allgemeines über das Thema "Auto-Makros"

Sehr wahrscheinlich kennen die meisten Excel-Anwender und -Programmierer den Zweck von so genannten Auto-Makros.

 

Weitere Informationen

Excel-Funktionen und -Features: Auto-Makros

 

To Top

 


Interessantes über Auto-Makros

Stellen Sie sich einmal vor, Sie möchten eine Arbeitsmappe öffnen, ohne dass ein allfällig enthaltenes Auto_Open-Makro (oder die Workbook_Open-Prozedur)

 

Wer ruft ein Auto-Makro auf?

Anweisung Application.Caller in Auto_Open- oder Auto_Close-Prozedur.

 

Sub Auto_Open()
  MsgBox Application.Caller
End Sub

To Top

 


Auto_Open-Makro auf der ersten Codezeile anhalten

Betrifft: Microsoft Excel 97

Stellen Sie sich einmal vor, Sie möchten eine Arbeitsmappe öffnen, ohne dass ein allfällig enthaltenes Auto_Open-Makro (oder die Workbook_Open-Prozedur) ausgeführt werden soll.

 

Tipp!

Profi-Tipp!

Auto-Code auf erster Zeile anhalten (F8 bei leerer Mappe)...

To Top

 


Aufruf eines Auto-Makros mit "Call" oder "RunAutoMacros"

 

Call Auto_Open
- oder -
ThisWorkbook.RunAutoMacros which:=xlAutoOpen

 

Sub Auto_Open()
  MsgBox Application.Caller
End Sub

Bei Aufrufen der Auto_Open-Prozedur mit "Call Auto_Open" erzeugt die Abfrage von Application.Caller den Laufzeitfehler 13.

 

The "Call Auto_Close" can cause the error 13. Use "ThisWorkbook.RunAutoMacros which:=xlAutoClose" instead of "Call". This example shows why:

Sub TestAutoClose()
  On Error GoTo ErrorHandler
  Err.Raise 62   'Simulate error 62
  Exit Sub


ErrorHandler:
  MsgBox Err.Number & ": " & Err.Description
  Call Auto_Close
  'ThisWorkbook.RunAutoMacros which:=xlAutoClose
End Sub

Sub Auto_Close()
  MsgBox Application.Caller
End Sub

Check these tests:
- When you start the "TestAutoClose" in the VBE, you'll get the error 13. Because the error is raised within the errorhandler, you can't trap him.
- When you start the procedure in Excel (ToolBar Button, CommandButton, embedded Object ...), you'll get no error!

Now set the "Call ..." as comment and use "RunAutoMacros" instead.
- When you start the proc in the VBE or in Excel, you receive no error.

To Top

 


Ungewöhnliches Verhalten der RunAutoMacros-Methode

Das Starten von Auto-Makros mittels der RunAutoMacros-Methode funktioniert in bestimmten Situationen nicht korrekt. Immer wenn zwei Auto-Makros nacheinander innerhalb der gleichen Prozedur aufgerufen werden, wird der zweite Aufruf nicht ausgeführt.

 

Sub ExecuteAutoMacro()
  ThisWorkbook.RunAutoMacros which:=xlAutoOpen
  ThisWorkbook.RunAutoMacros which:=xlAutoClose
  Debug.Print "Fertig"
End Sub

Sub Auto_Open()
  Debug.Print "Auto_Open-Makro"
End Sub

Sub Auto_Close()
  Debug.Print "Auto_Close-Makro"
End Sub

 

Weitere Informationen

The eXpLorer: Das Geheimnis von RunAutoMacros

Fragen und Antworten: Kann es sein, dass die Ausführung von Auto-Makros mittels RunAutoMacros nicht richtig funktioniert?

To Top

 


Doppelte Deklaration einer Auto-Makro-Prozedur

Bekanntlich befindet sich das Auto_Open-Makro in einem Standardmodul.

 

Sub Auto_Open()
  MsgBox "Auto_Open"
End Sub

Public Sub Auto_Open()
  MsgBox "Auto_Open"
End Sub

Private Sub Auto_Open()
  MsgBox "Auto_Open"
End Sub

 

Der Gültigkeitsbereich der Prozedur ist egal.

Beim Kompilieren des Programmes wird eine mehrfach vorhandene Auto_Open-Prozedur nicht erkannt.

 

Fehlermeldung "Mehrdeutiger Name: Auto_Open"

To Top

 


Das Auto_Open-Makro

Aufruf-Sequenz:
1. Workbook_Open
2. Workbook_Activate
3. Workbook_WindowActivate
4. Auto_Open

 

To Top

 


Das Auto_Close-Makro

Aufruf-Sequenz (ohne Speichern):
1. Workbook_BeforeClose
2. Auto_Close
3. Workbook_WindowDeactivate
4. Workbook_Deactivate

Aufruf-Sequenz (mit Speichern):
1. Workbook_BeforeClose
2. Auto_Close
3. Rückfrage "Änderungen speichern?"
4. Workbook_WindowDeactivate
5. Workbook_Deactivate

 

Auto_Close wird ausgeführt, bevor die Rückfrage "Sollen Ihre Änderungen in <Datei.xls> gespeichert werden?" erscheint.

 

To Top

Haben Sie Fragen, Anregungen oder Hinweise?
Senden Sie mir ein Mail

Zuletzt aktualisiert am 6.05.2005 / 17:00 Uhr
© 2002-2005 by Philipp von Wartburg, CH-8916 Jonen
Alle Rechte vorbehalten