Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1956to1960
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
Inhaltsverzeichnis

Worksheet_Change wird von bestimmter Excel-Datei deaktiviert

Worksheet_Change wird von bestimmter Excel-Datei deaktiviert
05.12.2023 08:44:26
Marco1981
Ich habe ein sehr kniffliges Problem. Ich muss derzeit eine kleine Anpassung an einer relativ umfangreichen Excel-Datei (Datei A) vornehmen, die aber bereits vor ca. 2 Jahren von einer anderen Kollegin erstellt wurde, die aber nicht mehr bei uns arbeitet. Ich habe bereits mehrmals Sachen am VBA Code dieser Datei geändert, war alles relativ problemlos, aber jetzt stehe ich vor einem absoluten Rätsel:
Ich habe ein Sub geschrieben, das ausgeführt werden soll, wenn in einer bestimmten Zelle etwas geändert wird, allerdings scheint "Worksheet_Change" in dieser Datei nicht zu funktionieren und ich komme nicht drauf, warum.
Ich habe folgenden Code im Tabellenblatt selber stehen:
Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, Range("G22")) Is Nothing Then Exit Sub
Worksheets("Bestellformular").Cells(24, 7).Value = "Erfolgreich!"
End Sub

Wenn ich jetzt etwas in die Zelle G22 schreibe, sollte er eigentlich "Erfolgreich!" in die Zelle G24 schreiben, es passiert aber absolut nichts, nichtmal eine Fehlermeldung.
Jetzt aber zum absolut mysteriösem Teil der Geschichte:
Wenn ich den selben Code in einem völlig neuen, leeren Excel Dokument (Datei B) verwende, funktioniert er einwandfrei. Aber: sobald ich Datei A, die ich eigentlich bearbeite, öffne und etwas in Zelle G22 schreibe, und er eigentlich den Code ausführen sollte, aber nichts passiert, funktioniert der Code auch in allen anderen offenen Excel-Dateien nicht mehr! Erst nachdem ich alle offenen Excel-Dateien schließe, funktioniert es zumindest in Datei B wieder.
Wenn ich Datei A nur öffne, macht das noch nichts, es funktioniert in Datei B weiterhin, erst sobald ich in Datei A etwas in Zelle G22 schreibe, funktioniert es in keiner offenen Excel-Datei mehr.
Ich kann jetzt leider Datei A hier nicht hochladen, weil sie sehr viele firmeninterne Daten enthält, und ich weiß, das macht die Sache etwas komplizierter, aber vielleicht hat ja trotzdem jemand eine Ahnung, was da das Problem sein könnte und kann mir helfen?
Danke schonmal!

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worksheet_Change wird von bestimmter Excel-Datei deaktiviert
05.12.2023 09:04:45
peter
Hallo

Ich vermute, das irgendwo im Code die Events deaktiviert werden. Such mal nach "Application.EnableEvents" und sollte es auf False gesetzt sein hast Du den Grund. Aber nicht einfach auf True setzen, könnte Nebeneffekte haben, daher genau schauen.

Peter
AW: Worksheet_Change wird von bestimmter Excel-Datei deaktiviert
05.12.2023 09:08:07
Oberschlumpf
Hi ???,

a) ich würd den Code so formulieren:


Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("G22")) Is Nothing Then
Worksheets("Bestellformular").Cells(24, 7).Value = "Erfolgreich!"
End If
End Sub


b) Wenn das Problem nur direkt in Datei A passiert, schau dir doch mal das Workbook-Open-Ereignis von Datei A an.
Wird vllt dort - oder auch irgdwo anders im Code - ein...
Application.EnableEvents = False

...ausgeführt, aber das notwendige...
Application.EnableEvents = True

...fehlt?

Andere Ideen hab zumindest ich gerade nicht.

Hilfts?

Ciao
Thorsten
Anzeige
AW: Worksheet_Change wird von bestimmter Excel-Datei deaktiviert
05.12.2023 09:10:59
UweD
Hallo

kann es sein, dass du in einem anderen Code die events abgeschaltet hast?

Ich nach das immer so...

Private Sub Worksheet_Change(ByVal Target As Range)

On Error GoTo Fehler
Const APPNAME = "Worksheet_Change"
If Not Intersect(Target, Range("G22")) Is Nothing Then
Application.EnableEvents = False
Cells(24, 7).Value = "Erfolgreich!"
End If
'*** Fehlerbehandlung
Err.Clear
Fehler:
Application.EnableEvents = True
If Err.Number > 0 Then MsgBox "Fehler in Sub """ & APPNAME & """" & vbCrLf _
& "Fehlernummer: " & Err.Number & vbLf & Err.Description: Err.Clear
End Sub

damit auch in einem Fehlerfall immer wieder eingeschaltet wird und auch eine mögliche Fehlermeldung kommt.

LG UweD

Anzeige
AW: Worksheet_Change wird von bestimmter Excel-Datei deaktiviert
05.12.2023 09:30:34
onur
WO genau befindet sich der Code mit dem Change-Event ?

Call ws_Unprotect("Startseite")

hebt den Schutz für Blatt "Startseite" auf ? Aber warum steht das in einer Schleife? Wenn du 10 Blätter hast, wird allein diese Zeile 10 mal ausgeführt. Und dann noch die anderen 3 Blätter.....
AW: Application.EnableEvents = False Fehler ???
05.12.2023 14:00:57
Piet
Hallo

ich sehe es gibt schon viele Antworten der Kollegen, ich habe noch nicht alle gelesen. Mach ich noch

Meine Erfahrung ist, "dumme eigene" Programmierfehler bei Worksheet_Change. Insbesondere mit Exit Sub!!
Bei MsgBox Meldungen, die das Programm abbrechen, springe ich üblichderweise mit Exit Sub aus dem Code raus.
Hat man aber vorher im Code - Application.EnableEvents = False - aktiviert, ist das ein katastrophaler Fehler!!
Wer schaltet die Events dann bitte wieder ein??? Exel kann nicht logisch denken, handelt sturheil nach anweisungen!

Schliesst man die Datei und öffnet sie wieder, scheint alles wieder normal zu funktionieren.
Bis man die Events wieder auf False setzt!! Das kann auch in einem Code in einem normalen Modul sein.
Prüfe bitte mal alle Events Befehle, ob du da aus dem Code rausspringst, ohne sie wieder einzuschalten.

mfg Piert
Anzeige
AW: Application.EnableEvents = False Fehler ???
05.12.2023 14:09:27
daniel
ja.
statt EXIT SUB empfiehlt sich eine saubere IF-Struktur:


oder noch besser, die Events nicht schon pauschal zu Beginn des Makros ausschalten und erst am Ende wieder einschalten, sondern immer nur vor der Aktion, bei der das erforderlich ist und hinterher dann auch gleich wieder einschalten.
Dann passiert es auch seltener, dass nach einem Fehlerabbruch die Events aus bleiben und man eine aufwendige Fehlerbehandlung benötigt.

Gruß Daniel
AW: Worksheet_Change wird von bestimmter Excel-Datei deaktiviert
05.12.2023 09:33:55
Marco1981
ja, wie gesagt, die Datei wurde ursprünglich von jemand anderem gemacht, das ist mir auch erst jetzt aufgefallen und ich hab mir genau das Selbe gedacht wie du ;) werd das dann auch noch korrigieren, die Schleife ist völlig unnötig hier...
Hab den Code, der hier ausgeführt wird bereits als Antwort auf einen anderen Kommentar gepostet....
Anzeige
AW: Worksheet_Change wird von bestimmter Excel-Datei deaktiviert
05.12.2023 09:35:35
onur
Das beanwortet aber nicht meine Frage "WO genau befindet sich der Code mit dem Change-Event ? "
AW: Worksheet_Change wird von bestimmter Excel-Datei deaktiviert
05.12.2023 09:38:18
Marco1981
Sorry, der Change Event befindet sich direkt im entsprechden Tabellenblatt, wie es sich gehört ;)
AW: Worksheet_Change wird von bestimmter Excel-Datei deaktiviert
05.12.2023 09:19:36
Marco1981
Danke schonmal, ich bin jetzt einen Schritt weiter. Ich habe deinen Code verwendet aber das Problem bleibt das Gleiche: keine Fehlermeldung, es passiert einfach gar nichts, ABER:
ich habe jetzt herausgefunden, dass der Code funktioniert, wenn die Datei frisch geöffnet wird, erst wenn ich einen Button klicke, der folgenden Code ausführt, funktioniert er nicht mehr:
Sub EntwicklerModus()


Dim ws As Worksheet
For Each ws In Worksheets

Call ws_Unprotect("Startseite")
Call ws_Unprotect("Bestellformular")
Call ws_Unprotect("Hilfeseite")
Call ws_Unprotect("Berechtigungen")

Next ws

Application.DisplayFullScreen = False
Application.ExecuteExcel4Macro "Show.Toolbar(""Ribbon"",True)"
Application.DisplayFormulaBar = True
ActiveWindow.DisplayHorizontalScrollBar = True
ActiveWindow.DisplayVerticalScrollBar = True
ActiveWindow.DisplayWorkbookTabs = True

Sheets("Startseite").Select

End Sub

Allerdings ist mir absolut nicht klar, welcher Befehl in diesem Code das Problem verursacht?
Anzeige
AW: Worksheet_Change wird von bestimmter Excel-Datei deaktiviert
05.12.2023 09:25:45
UweD
Hallo

was geschieht denn in dem Makro
ws_Unprotect(


LG UweD
AW: Worksheet_Change wird von bestimmter Excel-Datei deaktiviert
05.12.2023 09:29:10
Marco1981
Sub ws_Unprotect(ParamArray Tabellenblaetter())


Dim ws

For Each ws In Tabellenblaetter

Worksheets(ws).Unprotect

Next ws

Application.ScreenUpdating = False
Application.EnableEvents = False


End Sub


Application.EnableEvents = False wird wohl der Verursacher des Problems sein - aber warum funktioniert es dann trotzdem nicht, wenn ich in meinem Code Application.EnableEvents = True einbaue?

Anzeige
AW: Worksheet_Change wird von bestimmter Excel-Datei deaktiviert
05.12.2023 10:24:11
daniel
Hi
nach Application.EnableEvents = False
bleiben die automatischen Events ausgeschaltet.
Um sie wieder einzuschalten, muss der Befehl Application.EnableEvents = True ausgeführt werden.
Dies sollte aber innerhalb des Makros passieren, dass die Events ausgeschaltet hat, denn wenn das nicht passiert, muss das Makro dazu von Hand gestartet werden, da die automatischen Events ja deaktiviert sind.
Gruß Daniel
AW: Worksheet_Change wird von bestimmter Excel-Datei deaktiviert
05.12.2023 11:36:37
Marco1981
Danke!
Ja, nach etwas logischem Denken ist mir das auch klar geworden ;)
AW: Worksheet_Change wird von bestimmter Excel-Datei deaktiviert
05.12.2023 09:27:20
Marco1981
PS, die ws_Unprotect, die da aufgerufen wird, macht folgendes:

Sub ws_Unprotect(ParamArray Tabellenblaetter())


Dim ws

For Each ws In Tabellenblaetter

Worksheets(ws).Unprotect

Next ws

Application.ScreenUpdating = False
Application.EnableEvents = False


End Sub
Anzeige
AW: Worksheet_Change wird von bestimmter Excel-Datei deaktiviert
05.12.2023 09:29:53
UweD
Da ist doch die Ursache

 Application.EnableEvents = False


Schaltet das reagieren auf Eingaben ab.
Deshalb startet das Change.. dann nicht mehr.

LG UweD
AW: Worksheet_Change wird von bestimmter Excel-Datei deaktiviert
05.12.2023 09:36:56
Marco1981
Danke,

aber sollte es dann nicht eigentlich funktionieren wenn ich bei meinem Code dann am Anfang
Application.EnableEvents = True

einfüge? Tut es nämlich nicht ...
Aber ist eigentlich egal, besagter Code, der meinen Code deaktiviert wird eh im normalen Gebrauch nicht ausgeführt, sondern dient lediglich zum editieren der Datei, mein Problem ist damit eigentlich gelöst, danke für die Hilfe!
Anzeige
AW: Worksheet_Change wird von bestimmter Excel-Datei deaktiviert
05.12.2023 09:42:17
onur
"aber sollte es dann nicht eigentlich funktionieren wenn ich bei meinem Code dann am Anfang
Application.EnableEvents = True
einfüge? Tut es nämlich nicht ... "
Das kannst du 10x einfügen, aber wenn Events abgeschaltet sind, wird dieser Befehl in der Sub NICHT ausgeführt, da die Sub gar nicht erst betreten wird, da kein Event ausgelöst wird.
AW: Worksheet_Change wird von bestimmter Excel-Datei deaktiviert
05.12.2023 09:44:02
Marco1981
Jetzt hab ich's verstanden! Das macht natürlich Sinn ;)
Danke für deine Hilfe!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige