Weil Deine Objektvariable nicht definiert ist.
Aber der Reihe nach:
Public WithEvents App As Application
Hier wird die Variable APP deklariert.
Sobald deklariert, also, dem System mitgeteilt, dass eine Variable vom Datentyp Application am Tisch sitzt, muss diese auch definiert, also die Berechtigung zum mitspielen erteilt werden.
Hinweis: Was das Schlüsselwort Public bewirkt sollte klar sein. Wenn nicht, unbedingt einlesen.
Da die Variable sofort bei Spielbegin, also sobald diese Arbeitsmappe gestartet wird, mitspielen soll, muss diese noch definiert werden.
Das erreichst Du mit folgender Anweisung.
Set app = Application
Genau, sobald die eigentlich Arbeitsmappe von Excel (also der Applikation) geöffnet wurde.Wo muss diese Anweisung hin, sodass diese sofort bei Spielbegin aktiv sein wird?
Private Sub Workbook_Open()
Set app = Application
End Sub
Jetzt horcht die Variable app auf Ereignisse, welche auf Applikationsebene, also Excelebene, gesendet werden.
Erst jetzt also, wird folgender Code durchlaufen bzw ausgeführt:
Public Sub App_WorkbookOpen(ByVal wb As Workbook)
Application.EnableEvents = False
MsgBox "Test"
If wb.Name Like "DLQ*.xlsm" Then
Call DLQstart
End If
End Sub
Übrigens.
Folgende Anweisung schaltet die Ereignissbenachrichtigungen auf allen drei Ebenen (Applikation, Arbeitsmappe, Blätter) ab:
Application.EnableEvents = False
Gehe also sorgfältig und bewusst mit dieser Anweisung bzw schalte diese wieder rechtzeitig ein.
|