Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: change event "ausschalten"

change event "ausschalten"
23.08.2005 15:35:02
Tinu
Liebe Excel-Gemeinde
Per VBA-Code setze ich den Wert eines Drehfeldes (SpinButton) auf "0". Dabei wird nun aber der change event des SpinButtons ausgelöst und startet einen ganzen Rattenschwanz von Routinen. Gibt es eine Möglichkeit diesen Change Event während des Null-Stellens auszuschalten?
besten Dank für Euere Hilfe
Gruss
Tinu
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: change event "ausschalten"
23.08.2005 15:43:46
Matthias
Hallo Tinu,
Application.EnableEvents = False geht hier nicht.
erstelle eine globale Variable (z.B. "NoEvent"), die du auf True stellst, wenn das Change-Event nicht ausgelöst werden soll:

Public NoEvent As Boolean
Sub test()
NoEvent = True
Tabelle1.SpinButton1.Value = 11
NoEvent = False
End Sub

und ins Tabellenblattmodul:

Private Sub SpinButton1_Change()
If NoEvent Then Exit Sub
'dein Code
End Sub

Gruß Matthias
Anzeige
AW: change event "ausschalten"
23.08.2005 16:19:50
Tinu
Hallo Matthias
Vielen Dank für Deine rasche Antwort. Irgendetwas mache ich noch falsch, denn es hilft nichts.
In einem Modul habe ich also folgendes eingefügt:
Sub getAssignments()

On Error GoTo ErrHandler
With Application
.EnableEvents = False
.ScreenUpdating = False
End With

Dim NoEvent As Boolean
NoEvent = True
Worksheets("menu").SpinButton1.Value = 0
NoEvent = False
.....hier mein Code
Im Tabellenblatt habe ich dann diesen Code:

Private Sub SpinButton1_Change()
If NoEvent Then Exit Sub
Application.Run "movetable"
End Sub

Kanns Du mir sagen, was daran falsch ist?
Gruss
Tinu
Anzeige
AW: change event "ausschalten"
23.08.2005 16:28:46
Matthias
Hallo Tinu,
die Deklaration von NoEvent muss in ein normales Modul außerhalb aller Prozeduen, am besten an den Anfang:

Public NoEvent As Boolean

Nur dann ist die Variable in der ganzen Mappe bekannt.
Tip: aktiviere in VB-Editor unter "Extras, Optionen", Karte "Editor" den Haken bei "Variablendeklaration erforderlich". Das stellt an den Anfang jedes neuen Moduls ein "Option Explicit", und dann wäre bei deinem Lösungsversuch im Code des Tabellenblattes der Fehler "Variable nicht deklariert" gekommen.
Zwingt insgesamt zu sauberer Programmierung, lässt manche Fehler leichter erkennen.
Gruß Matthias
Anzeige
AW: change event "ausschalten"
23.08.2005 17:10:11
Tinu
Ja genau, jetzt klappt's :)))
Vielen Dank für Deine Hilfe und den Tip!
Gruss
Tinu
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Change Event in Excel VBA Ausschalten


Schritt-für-Schritt-Anleitung

Um das Change Event eines SpinButtons in Excel VBA auszuschalten, kannst du folgende Schritte befolgen:

  1. Globale Variable erstellen:

    • Füge in einem normalen Modul am Anfang den Code hinzu, um eine globale Variable zu deklarieren:
      Public NoEvent As Boolean
  2. Change Event im Tabellenblatt:

    • Im Tabellenblattmodul, wo sich der SpinButton befindet, implementiere den Change Event wie folgt:
      Private Sub SpinButton1_Change()
      If NoEvent Then Exit Sub
      ' Hier deinen Code einfügen
      End Sub
  3. Sub zum Setzen des SpinButton-Wertes:

    • Erstelle eine Sub-Prozedur, um den Wert des SpinButtons zu setzen, ohne das Change Event auszulösen:
      Sub SetSpinButtonValue()
      NoEvent = True
      Worksheets("menu").SpinButton1.Value = 0
      NoEvent = False
      End Sub
  4. Events deaktivieren (optional):

    • Du kannst auch die Anwendungseinstellungen anpassen, um weitere Ereignisse zu deaktivieren:
      With Application
      .EnableEvents = False
      .ScreenUpdating = False
      End With

Häufige Fehler und Lösungen

  • Variable nicht deklariert: Stelle sicher, dass die Variable NoEvent im Modul deklariert ist, nicht innerhalb einer Sub-Prozedur.
  • Events werden nicht deaktiviert: Überprüfe, ob Application.EnableEvents = False korrekt gesetzt ist und dass nach dem Setzen des SpinButton-Wertes NoEvent wieder auf False gesetzt wird.
  • Code funktioniert nicht wie erwartet: Achte darauf, dass du in der richtigen Arbeitsmappe und im richtigen Tabellenblatt arbeitest.

Alternative Methoden

  1. Verwendung von Application.EnableEvents:

    • Du kannst Application.EnableEvents = False setzen, um alle VBA-Events vorübergehend zu deaktivieren. Vergiss nicht, sie wieder zu aktivieren:
      Application.EnableEvents = True
  2. Verzögerte Ausführung:

    • Setze die Ereignisse nach einer kurzen Verzögerung wieder in Gang, um sicherzustellen, dass sie nicht sofort reagieren.

Praktische Beispiele

Hier ist ein einfaches praktisches Beispiel, das den SpinButton und das Change Event demonstriert:

Public NoEvent As Boolean

Private Sub SpinButton1_Change()
    If NoEvent Then Exit Sub
    MsgBox "Der Wert des SpinButtons hat sich geändert!"
End Sub

Sub SetSpinButtonValue()
    NoEvent = True
    Worksheets("menu").SpinButton1.Value = 5
    NoEvent = False
End Sub

In diesem Beispiel wird beim Ändern des SpinButton-Wertes eine Meldung angezeigt, es sei denn, NoEvent ist True.


Tipps für Profis

  • Option Explicit: Aktiviere die Option Option Explicit in deinem Modul, um sicherzustellen, dass alle Variablen deklariert sind. Das hilft dabei, Fehler frühzeitig zu erkennen.
  • Saubere Programmierung: Halte deinen Code modular und klar strukturiert, um die Wartbarkeit zu verbessern.
  • Debugging: Nutze die Debugging-Funktionen des VBA-Editors, um Probleme schnell zu identifizieren.

FAQ: Häufige Fragen

1. Wie deaktiviere ich alle Excel VBA Events? Du kannst Application.EnableEvents = False verwenden, um alle Events in der Anwendung zu deaktivieren. Vergiss nicht, sie danach wieder zu aktivieren.

2. Was ist der Unterschied zwischen Change Event und On Change Event? Das Change Event wird ausgelöst, wenn der Wert einer Zelle oder eines Steuerelements geändert wird, während On Change Event oft eine spezifische Formulierung in VBA ist, um auf Änderungen zu reagieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige