Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1892to1896
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Event wird nicht zweites Mal ausgeführt
16.08.2022 09:59:43
CoAdmiral
Hallo,
es geht bei mir um eine Datei, die wir für die Erstellung einer Kundenabrechnung verwenden. Ich habe im Menüsheet ("Steuerung") eine ActiveX-CheckBox eingfügt. Wird diese angeklickt, soll ein Storno-Beleg erstellt werden. Im Hintergrund macht er auch alles (Anpassung von Beträgen und Text). Was jedoch nur einmal klappt: mit dem Klick soll die aktive Excel-Datei als separate Datei (mit Namenszusatz "_Storno") abgespeichert werden. Würde ich den Vorgang wiederholen macht er zwar die Anpassung bei Text und Co., aber die Datei wird nicht separat gespeichert. Erst wenn ich wieder alles schließe und dann besagte Datei öffne und den Storno-Befehl anklicke, klappt es wieder. Ob ich mehrere Dateien offen habe oder nicht, spielt wohl keine Rolle.
Der Code ist unter "DieseArbeitsmappe" geschrieben:

Option Explicit
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Dim wsSteuerung, wsGS As Worksheet
Dim wb As Workbook
Dim FileOnly As String
Dim a As Variant
Set wb = ThisWorkbook
FileOnly = ThisWorkbook.Name
FileOnly = Left(FileOnly, Len(FileOnly) - 5)
Set wsSteuerung = wb.Worksheets("Steuerung")
Set wsGS = wb.Worksheets("GS")
On Error GoTo ErrorHandler
Application.EnableEvents = False
If Sh.Name = wsSteuerung.Name Then
If boolStorno = True Then
a = wsGS.Range("RG_01_alt") & "-S"
wsGS.Range("RG_01_alt").Copy
wsGS.Range("RG_01_alt").Offset(1, 0).PasteSpecial Paste:=xlPasteValues, operation:=xlNone, SkipBlanks:=False, Transpose:=False
wsGS.Range("RG_01_alt") = a
Application.CutCopyMode = False
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=wb.Worksheets("Steuerung").Range("Zielpfad") & "\" & FileOnly & "_Storno.xlsb"
Application.DisplayAlerts = True
Exit Sub
End If
End If
ErrorHandler:
Application.EnableEvents = True
End Sub
Die CheckBox ist im Sheet "Steuerung" hinterlegt:

Private Sub StornoCheckBox_Click()
If StornoCheckBox.Value = True Then
boolStorno = True
Application.Calculate
Else
ThisWorkbook.Worksheets("GS").Range("RG_01_alt").Offset(1, 0).ClearContents
boolStorno = False
End If
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Event wird nicht zweites Mal ausgeführt
16.08.2022 10:46:40
Heli
Hi,
in Deiner Prozedur hast Du ein "Exit Sub" (bei SboolStorno = True) gesetzt - damit werden die Events danach nicht mehr eingeschaltet, da musst Du "Goto ErrorHandler" schreiben, dann klappts.
VG, Heli
AW: Event wird nicht zweites Mal ausgeführt
16.08.2022 10:58:54
CoAdmiral
Danke, hat soweit funktioniert. Beim ersten Mal anklicken wird der Prozess gleich 3x Mal wiederholt, beim auschecken erneut 3x und dann egal wie oft ich das wiederhole, wird eine letzte Datei separat abgespeichert (mit "_Storno_Storno_Storno_Storno_Storno_Storno_Storno" am Ende).
Das gleich mehrere Versionen erstellt werden kann ich gut nachvollziehen, warum er aber nach der dritten Iteration aufhört verwundert mich.
Anzeige
AW: Event wird nicht zweites Mal ausgeführt
16.08.2022 11:17:36
Heli
Da hilft nur eins: Beispiel-Datei mit vollständigem Code hochladen, sonst ist das schwer nachvollziehbar :-)
Im Coding sind noch paar Sachen drin die ich anders bauen würde - z. B. löst Du mit "Application.Calculate" ein Ereignis aus, Du könntest aber einfach auch das Makro direkt auslösen (mit Call...). Allerdings kann ich das mit dem Auschnitt nicht beurteilen da ich den Gesamt-Aufbau nicht kenne.
AW: Event wird nicht zweites Mal ausgeführt
16.08.2022 11:29:42
Daniel
Hi
das Workbook_SheetCalculate-Event wird seperat für jedes Tabellenblatt ausgeführt.
dh wenn du eine Aktion ausführst, die dazu führt das auf mehreren Blättern Formeln neu berechnet werden, dann wird auch dieses Makro mehrfach ausgeführt, für jedes Blatt, auf dem eine Neuberechnung einer Formel stattgefunden hat. Das jeweilige Blatt ist dann in der Variablen Sh abgelegt.
du solltest nochmal drüber nachdenken, ob das das wirklich das richtige Event für dein Vorhaben ist.
Gruß Daniel
Anzeige
AW: Event wird nicht zweites Mal ausgeführt
22.08.2022 11:12:40
CoAdmiral
Danke für die Erklärung. Aufgrund Zeitmangels muss ich es erstmal so belassen, da es letztlich seine Aufgabe dennoch erfüllt. Es ist halt nicht ganz so "schön", aber im Arbeitsalltag nicht weiter relevant bzw. wir haben andere wichtere Themen.

311 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige