Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Checkbox führt zum Absturz

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Checkbox führt zum Absturz (4166 mal gelesen)
Frank88
Mitglied



Sehen Sie sich das Profil von Frank88 an!   Senden Sie eine Private Message an Frank88  Schreiben Sie einen Gästebucheintrag für Frank88

Beiträge: 153
Registriert: 11.10.2004

erstellt am: 19. Okt. 2007 14:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

heute ist wohl nicht mein Tag. Habe zwei Checkboxen auf einer UserForm. Eins davon ist immer aktiv, eins wird durch andere Einstellungen aktiviert. Es soll aber trotzallem nur eins angeklickt werden können. Mein Code:

Private Sub CheckBox1_Click()
If CheckBox2.Enabled = True Then
    If CheckBox1.Value = True Then
        CheckBox1.Value = False
        CheckBox2.Value = True
    Else
        CheckBox1.Value = True
        CheckBox2.Value = False
    End If
Else
    CheckBox1.Value = True
End If
End Sub

Private Sub CheckBox2_Click()
If CheckBox2.Enabled = True Then
    If CheckBox2.Value = False Then
        CheckBox2.Value = True
        CheckBox1.Value = False
    Else
        CheckBox2.Value = False
        CheckBox1.Value = True
    End If
End If
End Sub

Klicke ich damit auf die aktivierte, nicht selektierte Checkbox hängt sich Excel auf ---> in der Titelleiste der UserForm steht dann: "Titelblabla (Keine Rückmeldung)" Beenden über rechten Mausklick auf Excel in der Taskleiste, Schließen und "Sofort beenden".

Kann's das geben? Ich meine nein! Das ist simpelster Code, ohne weitere Abhängigkeiten. Ich glaub, ich mach jetzt Wochenende...

Gruß, Frank

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 19. Okt. 2007 14:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Frank88 10 Unities + Antwort hilfreich

Hallo Frank,

nach dem ersten Lesen bin ich etwas verwirrt.

Zitat:
If CheckBox1.Value = True Then
        CheckBox1.Value = False
Wenn Box1 den Wert Wahr hat (aktiv ist), dann soll sie nicht aktiv werden? . Wann hängt sich Excel auf (Breakpoint / Einzelschritt F8)?
Code:
Es soll aber trotzallem nur eins angeklickt werden können
Vielleicht ist der RadioButton das, was Du suchst? Gruppierungen beachten!

Bin mal gespannt (und noch nicht ganz im WE).
Frederik

------------------
DIN1055.de  |  Lastannahmen für Anwender

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Frank88
Mitglied



Sehen Sie sich das Profil von Frank88 an!   Senden Sie eine Private Message an Frank88  Schreiben Sie einen Gästebucheintrag für Frank88

Beiträge: 153
Registriert: 11.10.2004

erstellt am: 19. Okt. 2007 15:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Frederik,

bin auch noch nicht im WE.
Ja, genau. Das ganze soll funktionieren, wie eine Gruppe OptionButtons. Das heißt, es darf von beiden nur einer aktiv sein. Demzufolge: Ist eins aktiv und es wird drauf geklickt, muß es inaktiv werden und das andere soll das Häkchen bekommen.
Das Ganze mache ich so aus optischen Gründen. I n der UserForm sind schon ein paar OptionButtons. Deren Aktivierung führt dann zu zwei Auswahlmöglichkeiten (hin und wieder auch nur eine. In dem Fall ist dann die zweite .Enabled=False), die halt dann mit Häkchen ausgewählt werden sollen.

Die Idee mit Breakpoint setzen werde ich noch mal versuchen, fürchte aber, das bringt nix, weil ja Excel sich aufhängt. Dann kann man auch nicht mehr auf's Projekt zugreifen.

Gruß, Frank

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 19. Okt. 2007 16:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Frank88 10 Unities + Antwort hilfreich

Code:
Ist eins aktiv und es wird drauf geklickt, muß es inaktiv werden
Das sehe ich anders! Du klickst doch als Otto-Normal-User auf das inaktive, um dieses aktiv zu setzen? Mir fällt da noch das Ereignis OptionButton1_Click oder _Change ein?!

Jetzt bin ich weg.

------------------
DIN1055.de  |  Lastannahmen für Anwender

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Frank88
Mitglied



Sehen Sie sich das Profil von Frank88 an!   Senden Sie eine Private Message an Frank88  Schreiben Sie einen Gästebucheintrag für Frank88

Beiträge: 153
Registriert: 11.10.2004

erstellt am: 19. Okt. 2007 16:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Frederik (und an alle, die eventuell noch mitlesen),

die Idee mit Breakpoint war super. Da sieht man dann nämlich, daß aus der Sub für Checkbox2 beim Setzen von
Checkbox1.value = False
oder auch
Checkbox1.value = True
in die 'Private Sub CheckBox1_Click()' gesprungen wird. Das führt dann zu 'ner Endlosschleife, ganz klar.
Wobei doch die Sub '...Click()' heißt und nicht '...Change()'!
Das macht mich alles so fertig! Und deshalb gehe ich jetzt doch ins WE. Bis Montag. Vielleicht kann ich dann neues berichten. Oder es ist jemandem was eingefallen.

Gruß, Frank

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Frank88
Mitglied



Sehen Sie sich das Profil von Frank88 an!   Senden Sie eine Private Message an Frank88  Schreiben Sie einen Gästebucheintrag für Frank88

Beiträge: 153
Registriert: 11.10.2004

Civil3D 2018

erstellt am: 19. Okt. 2007 16:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Paulchen,

Dein Einwand ist berechtigt. Aber was glaubst Du, wieviele Anwender aus lauter Langeweile auf's falsche Kästchen klicken? Oder man hat nicht richtig gezielt. Oder man will vielleicht doch beide aktiv bzw. inaktiv haben, obwohl das absehbar zu Problemen führt und vom Ersteller der Tabelle auch ausdrücklich gesagt wurde...
Für manche ist einfach immer Freitag und denen will ich soweit es geht helfen.

Zu dem Thema Click() und Change() siehe mein anderes Posting. Da gibt's wohl keinen Unterschied bei einer Checkbox.

Gruß, Frank

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 20. Okt. 2007 13:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Frank88 10 Unities + Antwort hilfreich

Hallo Frank,

nun mit etwas mehr Ruhe. Ich fasse mal zusammen, wie ich das bisher verstanden habe. Zunächst die Grundlage: Mit Checkboxen (Kürzel: chk) meine ich die Dinger mit dem Häkchen, Mehrfach- oder keine Auswahl möglich; OptionButtons (Kürzel: opt) sind die runden Teile, wovon immer nur eins innerhalb einer Gruppe aktiv sein kann - und sinnvollerweise auch aktiv sein muß. Die anderen werden entsprechend ausgeschaltet (false). Besonders hilfreich finde ich das Einstiegs-Tutorial von Alexandra von Cube (pdf).

Die Hilfe zu diesen Elementen in Excel 2003 (zu Hause):

Zitat:
[...]
Verwenden Sie ein Kontrollkästchen-Steuerelement (CheckBox), um dem Benutzer die Wahl zwischen zwei Werten wie Ja/Nein, True/False oder Ein/Aus zu geben.

Die Standardeigenschaft für das Kontrollkästchen-Steuerelement ist die Value-Eigenschaft.

[...]
Verwenden Sie ein Optionsfeld-Steuerelement (OptionButton), um anzuzeigen, ob ein einzelnes Element innerhalb einer Gruppe ausgewählt wurde. Beachten Sie, dass sich die Optionsfeld-Steuerelemente innerhalb eines Rahmen-Steuerelements (Frame) gegenseitig ausschließen.

Die Standardeigenschaft für das Optionsfeld-Steuerelement ist die Value-Eigenschaft.
[...]


Das .value kannst Du weglassen, da es die Standardeigenschaft der CheckBox ist. Es schadet zwar nicht, verkürzt aber den Code und damit die Lesbarkeit für das menschliche Auge. Manchmal ist weniger mehr ;-).

Dein Anfangsproblem habe ich nachvollzogen - sobald Du eine Checkbox änderst, wird der anderen erzählt, sie sei nun auch betätigt worden. Du simulierst (oder besser: erwzingst) ein _Click-Ereignis. Was mich eingangs so verwirrt hat, bestätigt sich im Debug-Modus: Die Box ist in Deinem Code "gleichzeitig" True und False - da würde ich mich auch aufhängen . Àpropos: Wieder mal die Hilfe

Zitat:
Fortsetzen der Ausführung von Code

So halten Sie die Ausführung manuell an

1. Wählen Sie im Menü Ausführen den Befehl Unterbrechen (STRG+PAUSE), oder verwenden Sie die Symbolleistenschaltfläche...


Breakpoint: Klick' mal in der VBA-Entwicklungsumgebung in die Leiste direkt links vom Code. Da sollte so ein roter Punkt auftauchen. Alternativ: Taste F9 in der Zeile, in der Du halten möchtest; noch alternativer: Menü Debuggen - Haltepunkt ein/aus.

Dieser Vorschlag schaltet zwischen den Checkboxen 1 und 2 hin und her - egal, welche gerade aktiv ist. Auch das ist im Einzelschritt-Modus höchst interessant: Es laufen immer beide Routinen! Mag sein, das es elegantere oder "sauberere" Lösungen hierfür gibt. Diese funktioniert jedenfalls.

Code:
'Für die, bei denen immer Freitag ist ;-)

Private Sub UserForm_Initialize()
    CheckBox1 = True    'Beim Einblenden aktiv
    UserForm1.Show      'Zeig's mir!
End Sub

Private Sub CheckBox1_Change()
    If CheckBox1 = True Then
        CheckBox2 = False
    Else:
        CheckBox2 = True
    End If
End Sub

Private Sub CheckBox2_Change()
    If CheckBox2 = True Then
        CheckBox1 = False
    Else:
        CheckBox1 = True
    End If
End Sub


Wolltest Du sowas erreichen? Die Enabled-etc.-Geschichten darfst Du selbst steuern - zumal ich Deine Userform und die Hintergründe nicht kenne .

Angenehmen Start in die Woche,
Frederik

------------------
DIN1055.de  |  Lastannahmen für Anwender

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Frank88
Mitglied



Sehen Sie sich das Profil von Frank88 an!   Senden Sie eine Private Message an Frank88  Schreiben Sie einen Gästebucheintrag für Frank88

Beiträge: 153
Registriert: 11.10.2004

erstellt am: 22. Okt. 2007 09:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Frederik,

so fängt die Woche gut an. Möglicherweise bleibt's bei 5 Tagen Montag...
Ich verstehe zwar nicht, warum es mit dem Change-Ereignis klappt und mit dem Click-Ereignis nicht (ich hätte es eher andersrum erwartet) aber das ist mir jetzt auch wurscht und eine Lehre.
Der ganze Rest für die Userform hat schon funktioniert. Nur eben die finale Auswahl der Alternativen nicht.
Wie ich schon geschrieben hatte, ist mir schon klar, daß hier Optionbuttons eher am Platz gewesen wären. Aber aus optischen Gründen hatte ich mich für die Checkboxen entschieden.
Hintergrund: Hier werden Meßausrüstungen konfiguriert. Der Benutzer klickt an, was gemacht werden soll (zwischen 8 und 10 Kriterien mit 2 oder 3 Optionen). Daraus ergibt sich die zu verwendende Meßausrüstung. Oder in Einzelfällen auch eine Zweite. Da aber im Anschluß das System entsprechend konfiguriert werden muß (COM-Einstellungen, Datenformate, etc.), kann auch nur eine Konfiguration letztendlich verwendet werden. Entscheidet sich der Anwender also für eine, muß die Alternative inaktiv werden.

Gruß, Frank

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Paulchen
Mitglied
Bauing./SW-Entwickler


Sehen Sie sich das Profil von Paulchen an!   Senden Sie eine Private Message an Paulchen  Schreiben Sie einen Gästebucheintrag für Paulchen

Beiträge: 1227
Registriert: 19.08.2004

Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice

erstellt am: 22. Okt. 2007 10:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Frank88 10 Unities + Antwort hilfreich

Danke für die Hintergrundinfos! Hm...
Zitat:
Ich verstehe zwar nicht, warum es mit dem Change-Ereignis klappt und mit dem Click-Ereignis nicht...
Klappt auch ;-). Bei Dir lag es an der Mach-Wahr-Wenn-Falsch-Und-Umgekehrt-Endlos-Schleife und nicht am _Click- oder _Change-Ereignis. Auch hier hilft wieder die VBA-Hilfe zum Thema CheckBox - besonders die Ereignisse. Im Fall der chk ändert (auch) der Klick den Wert.

Letztlich zweitrangig, Hauptsache, es funktioniert.

Frederik

------------------
DIN1055.de  |  Lastannahmen für Anwender

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz