PDA

Vollständige Version anzeigen : Mit activate auf Kriegsfuss


Grumfordel
31.07.2012, 10:12
Hallo,

ich habe (wieder mal) Verständnisprobleme mit Worksheet.Activate. Ich lade eine Excel-Datei (Excel 2007, die Datei ist aber 2003-kompatibel) und erwarte das Workbook.open- und das Worksheet.activate-Ereignis.
Das Open-Ereignis tritt ein, aber nicht das Activate-Ereignis.

Hier meine Codes, zunächst "Diese Arbeitsmappe":
Private Sub Workbook_open()

MsgBox "Workbook_open"
Tabelle1.Select

End Sub


Und hier "Tabelle1":
Private Sub Worksheet_activate()

MsgBox "Worksheet_activate"

End Sub


Mein Problem ist, dass ich beim Öffnen der Excel-Datei die Meldung "Workbook_open" bekomme, aber nicht die Meldung "Worksheet_activate". Was mache ich falsch?

Dankbar für jeden Hinweis
Manfred

EarlFred
31.07.2012, 10:51
Hallo Manfred,

solange Tabelle1 das aktive Blatt der Mappe ist, löst ein erneutes "Activaten" das Ereignis nicht aus.

Wenn ein Code, der in einer Ereignisprozedur steht, auch von "außen" aufgerufen werden soll, würde ich den betreffenden Code in eine separate Sub auslagern und diese dann in Deinem Fall sowohl beim Aktivieren des Worksheets als auch beim Öffnen der Mappe aufrufen.

Etwas abenteuerlich geht's auch so:
(1)
Deklariere das Ereignis Worksheet_Activate nicht als Private:
Sub Worksheet_Activate()
MsgBox "Worksheet_Activate"
End Sub
Aufruf aus dem Open-Ereignis dann wie folgt:
Tabelle1.Worksheet_Activate
(Die Sub sollte schon beim Schreiben von "Tabelle1." mit Intellisense angezeigt werden)

(2)
Belasse die Sub als Private und nutze folgenden Aufruf aus dem Open-Ereignis:
Application.Run ThisWorkbook.Name & "!Tabelle1.Worksheet_Activate"

Beiden "Krücken" würde ich die Auslagerung der Codezeilen in eine andere Sub (ggf. mit Prüfung, dass diese nur unter bestimmten Umständen anläuft) allerdings vorziehen.

Grüße
EarlFred

Grumfordel
31.07.2012, 13:10
Hallo EarlFred,

vielen Dank für deine ausführliche Antwort. Ich werde nun ebenfalls die von dir vorgeschlagene "saubere" Lösung anwenden.
Mir war nicht bewusst, dass in Excel nach dem open- kein activate-Ereignis erfolgt. Ich meine, beim "grossen Bruder" Visual Basic ist das so.
Jedenfalls danke für die Hinweise.

Gruss
Manfred

EarlFred
31.07.2012, 13:18
Hallo Manfred,

dass in Excel nach dem open- kein activate-Ereignis erfolgt
das ist so nicht richtig und wurde von mir auch nicht behauptet!

Grüße
EarlFred