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

Checkboxen rufen sich immer wieder auf

Checkboxen rufen sich immer wieder auf
01.03.2021 09:59:24
M.G.
Guten Morgen
ich habe zwei Checkboxen.
Wenn eine Checkbox angeklickt wird, soll die andere das Häkchen verlieren.
Was am Laptop mit dem Code geklappt hat, funktioniert nun nichtmehr!
Mit einer MsgBox festgestellt, dass es die Boxen Routine wieder und wieder durchläuft....
Ich habe fast den Eindruck, dass es beim Unchecken es als Click registriert und daraufhin die andere Routine ausführt und so in eine Schleife gerät.
Tipps?

Private Sub langsam_Click()
langsam.Value = True
schnell.Value = False
End Sub


Private Sub schnell_Click()
schnell.Value = True
langsam.Value = False
End Sub


9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Checkboxen rufen sich immer wieder auf
01.03.2021 10:10:20
Nepumuk
Hallo,
warum benutzt du nicht OptionButtons? Da kann immer nur einer True sein und der andere wird automatisch False.
Gruß
Nepumuk

AW: Checkboxen rufen sich immer wieder auf
01.03.2021 10:16:18
Daniel
Eine Anforderung, die gegen Optionbuttons sprechen könnte, wäre dass auch nach Anklicken einer Box wieder alle Boxen abgewählt werden können.
Das geht nur mit Checkboxen, bei Optionbuttons bräuchte man hierfür einen zusätzlichen Button.
Gruß Daniel

AW: Checkboxen rufen sich immer wieder auf
01.03.2021 10:13:22
Daniel
HI
richtig.
Das Click_Event reagiert, wenn sich der Checkboxzustand ändert.
Dabei spielt es keine Rolle, ob der Anwender auf die Checkbox klickt oder ober der Wert per Code geändert wird.
es gibt da mehrere Möglichkeiten, das Problem zu beheben.
1. in deinem Speziellen fall: Verwende Optionbuttons und nicht Checkboxen. Bei Optionbuttons ist automatisch eingebaut, dass aus einer Gruppe immer nur ein Optionbutton aktiv sein kann und die andere Auswahl gelöscht wird.
dann muss man da nichts programmieren.
2. man verwende ein Event, dass nur auf Anwender-Eingabe reagiert und nicht auf Änderung per Code.
Das wären beispielsweise das MOUSEUP- oder MOUSEDOWN-Event, bei möglicher Tastatureingabe auch zusätzllich KeyUP/KeyDown anstelle von Click.
3. man erstelle eine Modul- oder projektweit gültige Variable, die man auf TRUE setzt, bevor man im Code eine Änderung am Steuerelement durchführen will.
im Click-Event des Steuerelemens fragt man dann diese Variable ab und entscheidet daran, ob der Code ausgeführt werden soll oder nicht.
(hinterher nicht vergessen, die Variable wieder zurück zu setzen)
Gruß Daniel

Anzeige
AW: Checkboxen rufen sich immer wieder auf
01.03.2021 10:30:10
M.G.
Danke schön für die ausführliche Antwort.
Habe es erstmal über Optionsbuttons gelöst.
Hmmm wenn ich eine globale Variable nehme (bool).
Kann ich zwar prüfen ob die Prozedur schonmal durchlaufen wurde, aber wenn ich hätte keine Idee wie zurückzusetzen.
Denn schließlich gibt es keinen wirklichen Unterschied zwischen dem manuellen klick und den durch das Ändern ausgelösten klick.
Etwas seltsam, dass am Laptop dies nicht passiert ist.
Es müsste also eher eine Abfrage sein, wenn Sub langsam_Click noch ausgeführt wird, dann nicht das nächste öffnen...

AW: Checkboxen rufen sich immer wieder auf
01.03.2021 10:51:32
Daniel
Hi
naja so wie du Variable = True programmiert hast, kannst du das mit Variable = False wieder zurücksetzen.
ansonsten halt so wie von Ralf vorgeschlagen mit genaueren Abfragen:
Sub Schnell_Click()
if Schnell = true Then if Langsam = true then Langsam = False
end if
Sub Langsam_Click
if Langsam = True then if Schnell = true then Schnell = false
end if
hier wird zwar auch das Schnell_Click aus dem Langsam_Click heraus aufgerufen (und umgekehrt natürlich auch), aber durch die präzisere Abfrage, ob überhaupt eine Änderung erforderlich ist, erfolgt dieser Aufruf dann nur einmal und nicht in einer Endloschleife.
Gruß Daniel

Anzeige
AW: Checkboxen rufen sich immer wieder auf
01.03.2021 10:14:27
ralf_b
die jeweils erste Zuweisung brauchst du nicht.
wenn du drauf klickst. dann ändert sich der Wert schon. Also ist eine Wertezuweisung mittels = true irgendwie komisch. Somit würde deine Checkbox nie den Wert false haben.
Wenn du du die Conrols miteinander koppeln möchtest, dann nimm lieber Optionbuttons. Ansonsten würde eine If Checkboxxy = true then CheckboxAB = false Lösung helden können.
gruß
rb

AW: Checkboxen rufen sich immer wieder auf
01.03.2021 10:23:24
onur

Private Sub langsam_Click()
Application.EnableEvents = False
schnell = Not langsam
Application.EnableEvents = True
End Sub
Private Sub schnell_Click()
Application.EnableEvents = False
langsam = Not schnell
Application.EnableEvents = True
End Sub


Anzeige
AW: Checkboxen rufen sich immer wieder auf
01.03.2021 11:14:24
Daniel
nö, leider nicht.
das EnableEvents wirkt nur auf die Excel-Spezifischen Events dh für Mappen- und Worksheet-Events.
es wirkt nicht auf die Events der ActiveX-Controls oder für die Events in einer Userform.
Gruß Daniel

AW: Checkboxen rufen sich immer wieder auf
01.03.2021 11:21:28
onur
Stimmt, die Events ein- und aiuszuschalten ist überflüssig, da der Code zwar ein Event auslöst, aber, wie bei deinem Code, nur einmal. Deswegen läuft er auch ohne EnableEvens=true.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige