Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1692to1696
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

Event on Change() verhindern

Event on Change() verhindern
16.05.2019 13:23:47
AnBad
Hallo,
wie löst man das folgende Problem korrekt?
Ich habe eine Userform erstellt. Die Userform beinhalten drei Kombinationsfelder (ComboBox) und mehrer Textfelder, die alle bei Aufruf befüllt werden (UserForm_Initialize). So weit alles klar.
Wenn beim Start somit auch der Wert z.B. des Kombinationsfeld1(ComboBox1) festgelegt wird, so wird dann sofort auch die Sub ComboBox1_Change() ausgeführt. Und das möchte ich vermeiden.
Aber wie? Wie kann man verhindern, dass andere Sub durch Change() ausgeführt werden? Jedoch müssten Private Subs und Funktionen weiterhin funktionieren.
Tausend Dank
Michael

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Event on Change() verhindern
16.05.2019 13:30:11
ChrisL
Hi Michael
Application.EnableEvents = False
Nicht vergessen, die Events anschliessend wieder einzuschalten! (würde empfehlen dies auch im Fehlerhandling zu berücksichtigen)
cu
Chris
AW: Event on Change() verhindern
16.05.2019 13:31:15
AnBad
Tausen Dank!
Einen schönen Tag noch!!
AW: Event on Change() verhindern
16.05.2019 13:53:48
Werner
@Chris,
hallo Chris, seit wann kann man das Change Event eines Controls auf einer Userform mit Application.EnableEvents verhindern? Damit lässt sich doch das Change Event auf einem Tabellenblatt verhindern, bei mir zumindest.
@AnBad
mit einer boolschen Variablen z.B., die als Public deklariert ist.
Public boJetztNicht As Boolean
Private Sub ComboBox1_Change()
If Not boJetztNicht Then
MsgBox "Heute ist " & Me.ComboBox1
End If
End Sub
Private Sub UserForm_Initialize()
boJetztNicht = True
Me.ComboBox1.AddItem "Montag"
Me.ComboBox1.AddItem "Dienstag"
Me.ComboBox1.AddItem "Mittwoch"
Me.ComboBox1.AddItem "Donnerstag"
Me.ComboBox1.AddItem "Freitag"
Me.ComboBox1.AddItem "Samstag"
Me.ComboBox1.AddItem "Sonntag"
Me.ComboBox1 = "Donnerstag"
boJetztNicht = False
End Sub

Gruß Werner
Anzeige
ups... stimmt owT.
16.05.2019 13:56:13
ChrisL
.
AW: Event on Change() verhindern
16.05.2019 14:31:32
Daniel
Hi
die Frage ist, ob Change wirklich das am besten geeignete Event ist.
Change reagiert auf jede Änderung der Combobox, auch unabhängig davon, ob sie vom Anwender oder über ein Makro ausgeführt wird.
Wenn man nur auf Eingaben des Anwenders reagieren will, sind häufig andere Events geeigneter, z.B. Exit, AfterUpdate, MouseUp/MouseDown, Click, weil diese dann nicht auf jede Änderung reagieren und somit der von Werner gezeigte Workaround nicht notwendig ist.
Gruß Daniel
AW: Event on Change() verhindern
17.05.2019 08:42:03
AnBad
Hi,
sorry, ich komme nicht klar...
Also:
1) Application.EnableEvents = False, das funktioniert leider nicht.
2) Ich habe daraufhin alle Combobox von "Auswahl1_Change()" auf "Auswahl1_Click()" geändert. Leider auch kein Erfolg.
3) Kombination von 1) und 2) hat auch nix gebracht.
Wenn während dem Durchlauf von "Private Sub UserForm_Initialize()" die Zeile "Auswahl1.ListIndex = xyz" kommt, dann springt das Programm zum "Private Sub Auswahl1_Click()". Und das will ich verhindern.
Klar, ich habe schon mit globalen Variablen gearbeitet. D.h. im Initialize() eine Variable auf z.B. 1 gesetzt und dann in Subs eine if Variable = 1 then goto ende. Aber das erscheint mir nicht professionel.
Gibt es keine gute Lösung?
Viele Grüße und ein schönes Wochenende.
Michael
Anzeige
AW: Event on Change() verhindern
17.05.2019 08:57:32
Daniel
Hi
1. Application.EnableEvents funtioniert nur für Events der Mappe und der Tabellenblätter, aber nicht für Events der Userform! (kannst du also komplett vergessen)
2. das Klick-Event spricht immer dann an, wenn sich der ListIndex der Combobox ändert und das passiert wenn du den Wert der Combobox ändert, auch per Code.
du musst dir halt die verschiedenen Events mal in der Hilfe anschauen.
dort sollte ja beschrieben sein, in welchen Fällen sie auslösen (einen groben Hinweis gibt ja immer der Eventname selbst).
Wenn du eines findest, welches nur dann auslöst, wenn es deinen Wünschen entspricht, kannst du dieses verwenden.
wenn du keines findest, musst du dir mit der von Werner beschriebenen Methode behelfen.
Gruß Daniel
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige