Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Workbook_Activate beim Öffnen der aktivieren

Workbook_Activate beim Öffnen der aktivieren
03.07.2006 16:55:22
Thomas
Hallo Mitstreiter,
eigentlich eine simple Sache, aber ich scheitere:
Ich habe eine Datei, die beim Öffnen normal geladen wird. Den Quellcode in VBA habe ich mit einem Passwort geschützt (VBA-Editor - Extras - Eigenschaften - Schutz). Nun ist aber das Problem, dass das Workbook_Activate Ereignis nicht mehr reagiert. Das erkenne ich daran, dass eine Msgbox nicht angezeigt wird. Auch ein Schließen der Datei und erneutes Öffnen helfen nicht. Warum? Wie kann man das wieder aktivieren?
Vielen Dank!
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Workbook_Activate beim Öffnen der aktivieren
03.07.2006 17:11:57
Dr.
Hast Du irgendwo ein Application.EnableEvents = False im Code stehen?
AW: Workbook_Activate beim Öffnen der aktivieren
03.07.2006 17:15:18
Thomas
Ja, aber nicht beim Workbook_Activate. Da steht sogar explizit als erster Befehl Application.EnableEvents=true und darauf dann die Msgbox.
AW: Workbook_Activate beim Öffnen der aktivieren
04.07.2006 07:43:35
Matthias
Hallo Thomas.
der Befehl "Application.EnableEvents=true" wird in der Workbook_Activate()-Prozedur aber erst gar nicht ausgeführt, solange .EnableEvents=False ist.
Weil, die Prozedur startet ja nur, wenn .EnableEvents=True ist!
Also Code prüfen, wo vergessen wurde, die Ereignisse wieder einzuschalten.
Gruß Matthias
Anzeige
AW: Workbook_Activate beim Öffnen der aktivieren
05.07.2006 11:52:15
Thomas
Hallo,
also ich habe jetzt überall Application.EnableEvents=false gesetzt.
Im Code von "DieseArbeitsmappe" steht folgender Text:

Private Sub Workbook_Open()
MsgBox ("Workbook open") 'funzt
Application.EnableEvents = True
MsgBox (Application.EnableEvents) 'gibt "Wahr" wieder
Worksheets("bla").Activate
End Sub

Im Code von der Tabelle dann folgendes:

Private Sub Worksheet_Activate()
MsgBox ("Worksheet aktiviert") 'funzt nicht
End Sub

Warum geht das nicht? Ich kapier es nicht!
Anzeige
AW: Workbook_Activate beim Öffnen der aktivieren
05.07.2006 14:01:44
Matthias
Hallo Thomas,
das Ereignis Worksheet_Activate() tritt nur ein, wenn vor dem Befehl Worksheets("bla").Activate ein anderes Blatt als "bla" aktiv ist.
Du müsstest also, wenn du es weiterhin nur ereignisgesteuert haben willst, vorher ein anderes Blatt aktivieren.
Oder du lagerst die Prozedur in Worksheet_Activate() aus und ruft sie in Workbook_Open manuell auf.
Gruß Matthias
Anzeige
AW: Workbook_Activate beim Öffnen der aktivieren
07.07.2006 09:41:58
Thomas
Vielen Dank!
Es ist zwar auch nicht die eleganteste Lösung, das alles woanders hinzuschreiben, aber es funzt. ;)
;
Anzeige
Anzeige

Infobox / Tutorial

Workbook_Activate beim Öffnen aktivieren


Schritt-für-Schritt-Anleitung

Um das Workbook_Activate-Ereignis in Excel VBA beim Öffnen der Arbeitsmappe zu aktivieren, kannst du folgende Schritte befolgen:

  1. Öffne den VBA-Editor (Alt + F11).

  2. Navigiere zu DieseArbeitsmappe.

  3. Füge den folgenden Code in das Workbook_Open()-Ereignis ein:

    Private Sub Workbook_Open()
        MsgBox ("Workbook open") 'funzt
        Application.EnableEvents = True
        MsgBox (Application.EnableEvents) 'gibt "Wahr" zurück
        Worksheets("bla").Activate
    End Sub
  4. Füge den nachfolgenden Code in das entsprechende Tabellenblatt ein:

    Private Sub Worksheet_Activate()
        MsgBox ("Worksheet aktiviert") 'funzt nicht
    End Sub
  5. Stelle sicher, dass das Arbeitsblatt "bla" nicht bereits aktiv ist, bevor du es aktivierst.


Häufige Fehler und Lösungen

Ein häufiges Problem ist, dass das Worksheet_Activate-Ereignis nicht ausgeführt wird. Hier sind einige mögliche Fehler und deren Lösungen:

  • Fehler: Worksheet_Activate() funktioniert nicht.

    • Lösung: Stelle sicher, dass ein anderes Blatt als "bla" aktiviert ist, bevor du Worksheets("bla").Activate aufrufst. Das Worksheet_Activate-Ereignis wird nur ausgelöst, wenn ein anderes Blatt aktiv ist.
  • Fehler: Application.EnableEvents ist auf False.

    • Lösung: Überprüfe, ob irgendwo im Code Application.EnableEvents = False gesetzt wurde. Dies muss vor der Ausführung des Workbook_Activate-Ereignisses auf True gesetzt sein.

Alternative Methoden

Wenn du die Workbook_Activate-Ereignisse nicht direkt verwenden möchtest, kannst du auch folgende Methoden in Betracht ziehen:

  • Manuelles Aufrufen: Du kannst die Logik in das Worksheet_Activate()-Ereignis auslagern und es manuell im Workbook_Open()-Ereignis aufrufen.

  • Verwenden von Workbook_SheetActivate: Dies aktiviert das Ereignis, wenn ein Blatt gewechselt wird, unabhängig davon, welches Blatt aktiv ist.


Praktische Beispiele

Hier ist ein einfaches Beispiel, das das Workbook_Activate-Ereignis demonstriert:

Private Sub Workbook_Open()
    MsgBox ("Workbook wird geöffnet")
    Application.EnableEvents = True
    Worksheets("Tabelle1").Activate
End Sub

Private Sub Worksheet_Activate()
    MsgBox ("Tabelle1 ist aktiviert")
End Sub

In diesem Beispiel wird beim Öffnen der Arbeitsmappe eine Nachricht angezeigt, und wenn du zu "Tabelle1" wechselst, wird eine weitere Nachricht angezeigt.


Tipps für Profis

  • Achte darauf, dass du Application.EnableEvents immer korrekt setzt, um unerwartete Fehler zu vermeiden.
  • Teste deinen Code in verschiedenen Szenarien, um sicherzustellen, dass die worksheet_activate()-Ereignisse unter allen Bedingungen korrekt funktionieren.
  • Verwende Debug.Print zur Fehlersuche, um den Status von Variablen und Ereignissen während der Ausführung zu überprüfen.

FAQ: Häufige Fragen

1. Warum wird das Worksheet_Activate-Ereignis nicht ausgelöst?
Das Ereignis wird nur ausgelöst, wenn ein anderes Blatt als das aktuell aktive Blatt aktiviert wird. Stelle sicher, dass das aktive Blatt gewechselt wird, um das Ereignis auszulösen.

2. Was kann ich tun, wenn Application.EnableEvents auf False gesetzt ist?
Überprüfe deinen Code auf Stellen, wo du Application.EnableEvents = False gesetzt hast, und stelle sicher, dass es vor der Ausführung deines Workbook_Activate-Codes auf True gesetzt wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige