um eine bestimmte Prozedur beim Schließen einer beliebigen aktiven Arbeitsmappe durch ein AddIn ausführen zu lassen benötige eine passende Ereignisprozedur.
Hat jemand eine Idee, wie diese aussehen könnte?
mfg
Berthold
um eine bestimmte Prozedur beim Schließen einer beliebigen aktiven Arbeitsmappe durch ein AddIn ausführen zu lassen benötige eine passende Ereignisprozedur.
Hat jemand eine Idee, wie diese aussehen könnte?
mfg
Berthold
dazu ist im AddIn die Erstellung einer Klasse notwendig, der dann über With Events eine eigene Ereignissteuerung zugewiesen werden kann.
Sende mir Deine Emailadresse und ich schicke Dir eine Beispiel-Datei.
Gruß
Axel
Email: wildspitze@gmx.de
In ein normales Modul:
Public AppObject As New clsEvents
In ein Klassenmodul namens clsEvents:
Public WithEvents ap As Application
Private Sub ap_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
Dein Code...
End Sub
Die Zuweisung
Set AppObject.ap = Application
gehört in das WorkbookOpenEreignis.
Gruss
Andreas
Public x As New ExcelEreignisse (beliebiges Modul)
Sub auto_open() (beliebiges Modul)s.o.
Set x.App = Application
End Sub
Option Explicit (Class Module)Name: ExcelEreignisse
Public WithEvents App As Application
Private Sub App_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
Call Blattschutz.Pin
End Sub
Die Prozedur im Modul Blattschutz wird nicht durchgeführt, was ist noch falsch?
mfg
Berthold
sieht schon alles Ok aus.
Ich werde es morgen noch mal testen, melde mich dann.
Nacht
Andreas
ich habe deinen Code in eine neue Arbeitsmappe kopiert.
Bei mir funktioniert er tadellos. Egal, welche Arbeitsmappe ich schliesse: Die Prozedur Pin (bei mir ein Dummy) wird ausgeführt,
auch, wenn ich das ganze als AddIn speichere.
hatte gestern keine Zeit mehr die Prozedur weiter zu prüfen.
Habe jetzt die Lösung gefunden. Der Fehler lag in der Prozedur "PIN", die nicht vollständig ausgeführt wurde.
Da ich bisher keine Erfahrung mit Klassen habe, bin ich von einer fehlerhaften Programmierung bei der Klasse ausgegangen.
Durch eine Einbau einer msgbox (Tipp von Axel) habe ich festgestellt, dass das Ereignis ausgeführt wurde, jedoch ins Lehre lief.
Vielen Dank
mfg
Berthold