Hallo Thammes,
dein Fehler liegt in folgender Zeile:
Dim k As New Konto("123", -8000, -3000)
Damit hast du jetzt zwei Variablen mit Namen k. Einmal die Klassenvariable WithEvents und dann die in deiner Funktion. In der Funktion, in der du die Buchungen aufrufst (Main) benutzt du nur die lokale k-Variable, während sich das die Event-Funktion an das DispoGrenze-Event der Klassenvariable k dranhängt. Das Ereignis wird also völlig korrekt ausgelöst, es gibt nur keine Abonenten.
Des Rätsels Lösung:
k = New Konto("123", -8000, -3000)
So initialisierst du die Variable k nur, aber deklarierst keine Neue.