Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Change Ereignis unterdrücken

Change Ereignis unterdrücken
21.04.2016 18:44:53
Frank
Hallo Zusammen!
Beim Klick in eine ListBox werden Textfelder und ComboBxen befüllt. Nun möchte ich aber dabei verhindern, dass das ChangeEreignis der ComboBox (cbBuchstabe) ausgelöst wird. Wie muss ich das anstellen?
Danke für eure Hilfe!
Gruß Frank H.

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Change Ereignis unterdrücken
21.04.2016 18:57:14
Beverly
Hi Frank,
versuche es mal so: benutze eine Boolsche Variable, die du belegst wenn das Click-Ereignis der ListBox ausgeführt wird. Im Change-Ereignis der ComboBox fragst du dann ab, ob die Variable belegt ist.


AW: Change Ereignis unterdrücken
21.04.2016 19:48:07
Frank
Hallo Karin!
Danke dir für deinen Beitrag, aber dazu reicht mein Wissen wohl nicht aus um das zu bewerkstelligen, dazu bin ich wohl zu "blöd"!
Kannst du es mir näher erklären?
Danke!
Gruß Frank H.

Anzeige
AW: Change Ereignis unterdrücken
21.04.2016 20:49:54
Beverly
Hi Frank,
ich kenne deinen Code nicht, aber vom Prinzip her so:
Option Explicit
Dim blnListBox As Boolean
Private Sub ComboBox1_Change()
' wenn Variable nicht belegt dann das Change-Ereignis ausführen sonst nicht
If blnListBox = False Then
' hier der Code deiner ComboBox
End If
' Variable zurücksetzen für die nächste Runde
blnListBox = False
End Sub
Private Sub ListBox1_Click()
' Variable belegen
blnListBox = True
ComboBox1.ListIndex = 0
End Sub


Anzeige
AW: Change Ereignis unterdrücken
21.04.2016 20:08:33
Daniel
Hi
Verwende das Changeereignis einfach nicht.
Um auf die Eingabe eines Anwenders zu reagieren gibt es bessere Events, die bei einer neubefüllung nicht starten (Exit, AfterUpdate, MouseUp, ggf auch Click...)
Change läuft bei jeder Änderung am Objekt los, egal was geändert wird und egal, wer ändert.
Gruß Daniel

Anzeige
AW: Change Ereignis unterdrücken
21.04.2016 20:45:32
Frank
Hallo Daniel!
Werde morgen drüber nachdenken, danke dir und Gute Nacht!
Gruß Frank H.
;
Anzeige
Anzeige

Infobox / Tutorial

Change Ereignis in VBA unterdrücken


Schritt-für-Schritt-Anleitung

Um das Change-Ereignis einer ComboBox zu unterdrücken, wenn ein Benutzer auf eine ListBox klickt, kannst Du eine Boolsche Variable verwenden. Hier ist eine einfache Anleitung, wie Du das umsetzt:

  1. Öffne den VBA-Editor in Excel (Alt + F11).
  2. Füge das folgende Beispiel in das entsprechende Formular ein:
Option Explicit
Dim blnListBox As Boolean

Private Sub ComboBox1_Change()
    ' Wenn die Variable nicht belegt ist, das Change-Ereignis ausführen
    If blnListBox = False Then
        ' Hier der Code deiner ComboBox
    End If
    ' Variable zurücksetzen für die nächste Runde
    blnListBox = False
End Sub

Private Sub ListBox1_Click()
    ' Variable belegen
    blnListBox = True
    ComboBox1.ListIndex = 0
End Sub
  1. Speichere Deine Änderungen und teste die Funktionalität.

Häufige Fehler und Lösungen

  • Fehler: ComboBox wird trotz der Bedingung im Change-Ereignis aktualisiert.

    • Lösung: Überprüfe, ob die Boolsche Variable korrekt gesetzt und zurückgesetzt wird. Achte darauf, dass die Logik in den Ereignisprozeduren stimmt.
  • Fehler: ListBox wird nicht richtig angesprochen.

    • Lösung: Stelle sicher, dass die Namen der Steuerelemente (ListBox1, ComboBox1) exakt mit den Namen in Deinem VBA-Code übereinstimmen.

Alternative Methoden

Wenn Du das Change-Ereignis nicht verwenden möchtest, gibt es auch andere Events, die Du einsetzen kannst:

  • Exit-Ereignis: Reagiert, wenn der Fokus das Steuerelement verlässt.
  • AfterUpdate-Ereignis: Tritt ein, nachdem ein Benutzer das Steuerelement bearbeitet hat.
  • MouseUp-Ereignis: Kann verwendet werden, um nach einem Mausklick zu reagieren.

Diese Alternativen können oft eine elegantere Lösung bieten, insbesondere wenn Du verhindern möchtest, dass das vba listbox change Event unerwünscht ausgelöst wird.


Praktische Beispiele

Hier sind einige praktische Anwendungsbeispiele:

  1. Befüllen von Textfeldern: Wenn Du Textfelder basierend auf der Auswahl in einer ListBox befüllst, kannst Du sicherstellen, dass die ComboBox nur aktualisiert wird, wenn es notwendig ist.

  2. Eingabevalidierung: Verwende das AfterUpdate-Ereignis, um Eingaben zu validieren, bevor sie übernommen werden.

  3. Dynamische Daten: Nutze das MouseUp-Ereignis, um auf Benutzerinteraktionen zu reagieren, ohne das Change-Ereignis auszulösen.


Tipps für Profis

  • Verwende die Option Explicit Anweisung, um sicherzustellen, dass alle Variablen deklariert sind. Dies kann helfen, Fehler zu vermeiden.
  • Dokumentiere Deinen Code mit Kommentaren, damit Du und andere ihn später besser verstehen können.
  • Experimentiere mit verschiedenen Ereignissen, um herauszufinden, welches am besten für Deine Anwendung geeignet ist.

FAQ: Häufige Fragen

1. Wie kann ich verhindern, dass das Change-Ereignis mehrmals ausgelöst wird?
Verwende eine Boolsche Variable wie im obigen Beispiel und setze sie entsprechend, um das unerwünschte Auslösen zu verhindern.

2. Welche Excel-Version benötige ich für diese Methoden?
Die beschriebenen Methoden sollten in allen modernen Excel-Versionen (Excel 2010 und später) funktionieren. Stelle sicher, dass Du über den Zugriff auf den VBA-Editor verfügst.

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