Office: EnableEvents wird ignoriert / ohne Wirkung!

Helfe beim Thema EnableEvents wird ignoriert / ohne Wirkung! in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo! Leider habe ich ein Problem in folgendem Code: Sub Workbook_Close() Application.EnableEvents = False 'Alle Dropdowns refreshen With... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Pumàh, 11. August 2010.

  1. Pumàh Erfahrener User

    EnableEvents wird ignoriert / ohne Wirkung!


    Hallo!

    Leider habe ich ein Problem in folgendem Code:

    Code:
    Sub Workbook_Close()
    
    Application.EnableEvents = False
    
    'Alle Dropdowns refreshen
    With Sheets("Fokus01")
    .test = ""
    End With
    
    'Alle Dropdowns werden deaktiviert
    With Sheets("Fokus01")
    .test.Enabled = False
    End With
    
    Application.EnableEvents = True
    
    End Sub
    Obwohl ich Application.EnableEvents = False gesetzt habe, ruft VBA nach 'Alle Dropdowns refreshen das Change-Ereignis des Dropdowns auf (vollständiger Code in der angehängten Mappe). Dies habe ich durch den Prozedurschritt F8 festgestellt!

    Weiß jemand, woran das liegen könnte? Danke!
     
  2. Kallewirsch Erfahrener User
    Hallo,

    Dein Aufruf steht in einer Sub, die erst dann aufgerufen wird, wenn die Mappe geschlossen wird. Daher kann sie in einer geöffneten Mappe nicht funktionieren.

    Gruß

    Edgar
     
    Kallewirsch, 11. August 2010
    #2
  3. Pumàh Erfahrener User
    Generell ja, aber ich muss das Makro doch testen, und bin daher mit F8 schrittweise durch das Makro gegangen. Unabhängig davon verstehe ich nicht, wieso EnableEvents = False ignoriert wird?
     
  4. Kallewirsch Erfahrener User

    EnableEvents wird ignoriert / ohne Wirkung!

    Kallewirsch, 11. August 2010
    #4
  5. Pumàh Erfahrener User
    Danke für den Link, die Idee dahinter klingt einleuchtend. Leider verstehe ich aber nicht alle Teile, kann jemand etwas genaueres dazu sagen?

     
  6. schatzi Super-Moderator
    Hallo!

    Die weiteren Zeilen gehören zum Code des dortigen Fragestellers und haben mit deiner Problematik nichts zu tun.
    Was du zu tun hast, ist nur folgendes:
    Deklariere eine globale Variable:
    Code:
    Public blnCombo As Boolean
    Solange du dieser Variable keinen expliziten Wert zuweist, ist sie "False".
    Als erste Zeile deines Close-Ereignisses setzt du diese Variable auf "True":
    Code:
    blnCombo = True
    Als letzte Zeile deines Close-Ereignisses setzt du diese Variable wieder auf "False":
    Code:
    blnCombo = False
    Und in der ersten Zeile deines TestChange-Ereignisses fragst du diese Variable ab:
    Code:
    If blnCombo Then Exit Sub
    PS: Was ich mich allerdings frage:
    Warum sperrst du die ComboBox beim Schließen der Mappe und warum entsperrst du sie wieder beim Öffnen der Mappe?
    Was bitteschön soll mit der ComboBox Schlimmes passieren, wenn die Mappe geschlossen ist?
     
    schatzi, 12. August 2010
    #6
  7. Kallewirsch Erfahrener User
    Hallo,

    von mir auch noch ein Satz:

    If then gibt es in mehreren Ausführungen:
    1:
    Code:
    If Range("A1")="" then Range("A1")=7
    Mit diesem Einzeiler ist das Ganze erschlagen. Wenn A1="" dann A1=7. Da könnten jetzt auch andere Anweisungen stehen, aber es reicht diese Zeile. Wird häufig mit THEN EXIT SUB benutzt.
    2:
    Code:
    If Range("A1")="" then
         Range("A1")=7
         End if
    Das Gleiche wie in 1 auf 3Zeilen. Wenn A1 leer ist, dann A1=7 sonst mache nichts. Da könnte jetzt auch eine MsgBox als Anweisung stehen.
    3:
    Code:
    If Range("A1")="" then
         Range("A1")=7
         Else
         End if
    Gleichbedeutend mit 2
    4:
    Code:
    If Range("A1")="" then
         Range("A1")=7
         Else
         Range("A1")=Range("A1")+1
         End if
    Wenn A1="" dann A1=7 sonst A1=a1+1
    5:
    Code:
    If Range("A1")="" then
         Range("A1")=7
         ElseIf Range("A1")=5 then
         Range("A1")=Range("A1")+1
         Else
         Range("A1")=Range("A1")-1
         End if
    Zwei verschachtelte Bedingungen, wie bei den Formeln auch.
    Wenn A1="" dann A1=7 Ende
    wenn A1<>"" prüfe ob A1=5. Wenn ja, dann A1=a1+1, wenn nein dann A1=a1-1

    Fazit:

    IF braucht kein ELSE und wenn alles in einer Zeile steht noch nicht einmal ein END IF

    Gruß

    Edgar
     
    Kallewirsch, 12. August 2010
    #7
  8. Pumàh Erfahrener User

    EnableEvents wird ignoriert / ohne Wirkung!

    Hallo schatzi! Danke für deine Hilfe.

    Meine Comboboxen enable ich erst, wenn die darüberliegende Combobox einen Wert enthält. Z.B. wird die Combobox Land erst enabled, wenn der Kontinent ausgewählt wurde. Am Ende möchte ich das Formular dann einfach wieder in der Urzustand bringen, daher refreshe und disable ich alle Comboboxen (außer die ganz oben natürlich). Könnte ich natürlich auch beim Öffnen machen!

    Das mit der globalen Variable klingt gut, jedoch komme ich zu einem Problem, wenn ein Change-Ereignis sich durch eine eigene Codezeile mittendrin selbst wieder aufruft. Dann ist blnSperre wieder auf False. Dann greift Land_Change() und läuft auch durch, da ja blnSperre auf False ist. Muss ich also für jede Combobox eine eigene globale Variable erstellen?

    Hinzu kommt, dass der Code sich nach End Sub jeweils noch zwei Mal wiederholt, verstehe das wer will ... Das ist bei allen meinen Combobox-Change() Ereignissen so. Sie lösen sich nach komplettem Ablauf selbst noch zusätzliche zwei Mal aus.

    Edit: hier noch kurze Info wofür strKontinent steht:

     
  9. Pumàh Erfahrener User
    Kallewirsch, danke für die Erläuterung. So gut beschrieben wie du es hat war es in der VBA Hilfe ganz und garnicht ;)
     
  10. Kallewirsch Erfahrener User
    Hallo,

    ohne Deine Tabelle zu kennen ist es sehr mühsam Fehler zu suchen.
    Was auffällt:
    -DIM-Anweisungen gehören an den Anfang des Codes
    -Kontinent <> strKontinent ist nicht so günstig, zumindest der Kontinent sollte noch ein Präfix haben, damit man weiß was es ist, hier nehme ich an würde cmb passen.
    -
    ist ein nicht sinniges Konstrukt. Da wäre
    Code:
    If strKontinent <> "" Then
    
    wohl besser.

    Ansonsten wäre die Tabelle hilfreich, denn Nachbauen ist nicht so prickelnd.

    Gruß

    Edgar
     
    Kallewirsch, 12. August 2010
    #10
Thema:

EnableEvents wird ignoriert / ohne Wirkung!

Die Seite wird geladen...
  1. EnableEvents wird ignoriert / ohne Wirkung! - Similar Threads - EnableEvents ignoriert Wirkung

  2. Standardkalender wird ignoriert

    in Microsoft Outlook Hilfe
    Standardkalender wird ignoriert: Hallo liebe Community, folgende Konstellation: Windows 10 22H2 Outlook 2019 16.0.10401.20018 64 Bit Es gibt eine zwei PST-Dateien und eine OST-Datei Die erste PST enthält alte E-Mails und einen...
  3. EnableEvents

    in Microsoft Excel Hilfe
    EnableEvents: Liebe ExpertInnen, mich äfft ein Spuk. Aus Access habe ich eine Codestrecke kopiert, die verhält sich in Excel anders. Es geht um die Frage, ob Kennwort und Wiederholung übereinstimmen. Code:...
  4. SUMMENPRODUKT() ignoriert die Zelle mit mehrere Werte

    in Microsoft Excel Hilfe
    SUMMENPRODUKT() ignoriert die Zelle mit mehrere Werte: Hallo Experts, Ich verwende die Formel =SUMMENPRODUKT(), um die Anzahl von einem bestimmten Text (hier "Auto 1") in einer Spalte zu ermitteln. Leider ermittelt die Formel die Anzahl 3, obwohl der...
  5. EnableEvents reagiert auf welche Events?

    in Microsoft Excel Hilfe
    EnableEvents reagiert auf welche Events?: Hallo, immer wieder lese ich, dass Application.EnableEvents = False die Ereignisse nicht ausgeführt werden sollen. Ich arbeite mit Windows 7 64-Bit und Excel 2003. In einigen Mappen versuche...
  6. Größe Pop-Up Endlosformular wird ignoriert

    in Microsoft Access Hilfe
    Größe Pop-Up Endlosformular wird ignoriert: Hi allerseits, ich habe ein Pop-Up Endlosformular mit einer festen geringen Anzahl von Datensätzen, so dass ich alle Datensätze im Formular anzeigen könnte. Öffne ich das Formular direkt, wird...
  7. EnableEvents = Flase verhindert Msgbox nicht

    in Microsoft Excel Hilfe
    EnableEvents = Flase verhindert Msgbox nicht: Hola, In Workbook_BeforeClose möchte ich einen ToggleButton resetten (Value auf False), allerdings soll dabei nicht die Msgbox im Click-Event ausgerufen werden (Die Captionänderung schon):...
  8. Bed. Formatierung (Null soll ignoriert werden) geht nicht wenn alle Werte Null sind

    in Microsoft Excel Hilfe
    Bed. Formatierung (Null soll ignoriert werden) geht nicht wenn alle Werte Null sind: Hallo zusammen Bin gerade dabei für nen lehrer eine Tabelle zu erstellen in der Autotmatisch die niedrigste und die höchste Punktwerte markiert. Die Tabelle sieht folgendermaßen aus: A...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden