Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
460to464
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
460to464
460to464
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Klassenmodul "DieseArbeitsmappe" funkt nur gelegen

Klassenmodul "DieseArbeitsmappe" funkt nur gelegen
25.07.2004 20:09:24
Eberhard
Hallo an alle Helfer,
in "DieseArbeitsmappe" ist unter Workbook_SheetChange Code abgelegt. Dieser Code wird richtig verarbeitet, wenn die Datei erstmals aufgerufen wird.
Nach dem schließen und erneuten öffnen der Datei wird diese Prozedur offenbar nicht mehr abgearbeitet. Schließen von Excel mit anschließendem Neustart behebt das Problem wieder.
Woran kann das liegen ?
Zudem läuft ein auto_close (mit Parameter-Abfrage aus anderen Funktionen, die kriege ich im Klassenmodul nicht hin) ab.
Workbook_SheetChange: Ändert bei Änderungen im WB bestimmte Zellen,die in auto_close abgefragt und verarbeitet werden (Wenn Änderung, dann Abfrage ob gespeichert werden soll; die Speicherung ändert auch das Layout)
Workbook_BeforeClose und Workbook_BeforeSave sollen per Code "ausgeschaltet" werden (die entsprechende Überprüfung soll über auto_close gehen, Grund s.o.) - geht das per: Application.EnableEvents = True/False ohne weiteren Code) ?
Vielen Dank für jede Anregung
Gruß
Eberhard

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Klassenmodul "DieseArbeitsmappe" funkt nur gelegen
25.07.2004 20:14:05
Nepumuk
Hallo Eberhard,
du hast in einer Routine Application.EnableEvents = False gesetzt und anschließend nicht mehr auf True.
Gruß
Nepumuk
AW: Klassenmodul "DieseArbeitsmappe" funkt nur gelegen
25.07.2004 20:27:02
Eberhard
Hallo Nepumuk,
Die WB_BeforeClose bzw WB_BeforeSave sehen gleich aus:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.EnableEvents = False
Application.ScreenUpdating = True
End Sub

Public Sub Workbook_SheetChange(ByVal Sh As Object,ByVal Source As Range)
If Source.Address = "$XY$111" Then GoTo Ende
Application.EnableEvents = False
Call Application.Run(ThisWorkbook.Name & "!Blatt_Änderung")
Application.EnableEvents = True
Ende:
End Sub

Blatt_Änderung: im benannten Bereich werden festgelegte Veränderungen durchgeführt, und das klappt ja auch beim ersten mal nach dem Start von Excel mit der Datei, nicht aber beim wiederholten Öffnen der Datei (war zuvor geschlossen)
Das WB_SheetChange wird nicht mehr ausgeführt
Gruß
Eberhard
Anzeige
AW: Klassenmodul "DieseArbeitsmappe" funkt nur gelegen
25.07.2004 20:51:17
Nepumuk
Hallo Eberhard,
hier liegt der Fehler:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.EnableEvents = False
Application.ScreenUpdating = True
End Sub

Diese Routine und die für das BeforeSave - Ereignis kannst du komplett weglassen, die haben keinen Sinn.
Gruß
Nepumuk
AW: Klassenmodul "DieseArbeitsmappe" funkt nur gelegen
25.07.2004 21:18:17
Eberhard
Hallo Nepomuk,
sorry, ich hatte nur einen Teil kopiert und nicht richtig korrigiert:
in der Tat war der Inhalt beider WB_BeforeSave/Close wie folgt:
'Application.ScreenUpdating = False
Application.EnableEvents = False
Application.EnableEvents = True
'Application.ScreenUpdating = True
also eigentlich korrekt.
(Für den "Schreibfehler" entschuldige ich mich hatte nur ' weggenommen und False ersetzt)
Das rausnehmen ist ok, hat aber bei WB_SheetChange leider auch nix gebracht.
Danke für die Hilfe bisher
Gruß
Eberhard
Anzeige
AW: Klassenmodul "DieseArbeitsmappe" funkt nur gelegen
25.07.2004 21:48:38
Nepumuk
Hallo Eberhard,
kannst du die Mappe mal auf den Server laden? Daten müssen keine drin sein, da ich mir nur den Code ansehe.
Gruß
Nepumuk
AW: Klassenmodul "DieseArbeitsmappe" funkt nur gelegen
25.07.2004 20:55:39
Matthias
Hallo Eberhard,
wie Nepumuk sagte:
du hast in einer Routine Application.EnableEvents = False gesetzt und anschließend nicht mehr auf True.
also hier:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.EnableEvents = False
Application.ScreenUpdating = True
End Sub

Und was macht eigentlich diese Prozedur für einen Sinn, außer dass die (unerwünschterweise) die Ereignisprozeduren deaktiviert? Das ScreenUpdating True zu setzen vor dem Speichern oder Schließen erscheint mir nicht sinnvoll...
Gruß Matthias
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige