Excel 2007: Wie kann ich mit einem Makro die Checkbox eines anderen Sheets ansprechen?
Es sieht so aus: Mein aktives Sheet ist das erste. Auf dem zweiten Sheet sind ein paar Kontrollkästchen, bei denen ich nun abfragen möchte, ob sie ein Tick haben oder nicht. Aus einem Forum habe ich folgendes herausgekriegt:
Sub machwas()
ActiveSheet.Shapes("Check Box 1").Select
If Selection.Value = xlOn Then
MsgBox "Häkchen gesetzt!"
Else
MsgBox "Häkchen nicht gesetzt!"
End If
End Sub
Das Ziel wäre, dass ich ActiveSheet durch einen Code ersetzen kann, der dann das zweite Sheet - es heisst Mitarbeiter - anspricht.
Ausprobiert habe ich ohne Erfolg:
- Sheets("Mitarbeiter").
- WorkSheets("Mitarbeiter").
- Workbooks("test.xls").Worksheets("Mitarbeiter").
2 Antworten
Das ist leider nicht so ganz mein "Fachgebiet"
Du hast anscheinend das Kontrollkästchen aus den Formularsteuerelementen genommen.
Damit komme ich auf die Schnelle auch nicht weiter.
Aber wenn Du die Checkbox aus den Active-X-Steuerelementen nimmst, kannst Du die SO abfragen:
Sub machwas()
If Worksheets("Mitarbeiter").CheckBox1.Value Then
MsgBox "Häkchen gesetzt!"
Else
MsgBox "Häkchen nicht gesetzt!"
End If
End Sub
Hey Oubyi
Vielen Dank für deine Hilfe. Ich konnte es nun mit deiner 2. Antwort lösen. Was ich dich aber noch fragen möchte: Was ist der Unterschied zwischen einem Active-X-Steuerelementkontrollkästchen und einem Formularsteuerelementkontrollkästchen (wirklich ein tolles Wort :D) ?
Einem Formularsteuerelement kannst Du ein Makros zuweisen, und viel mehr nicht.
Mit einem Active-X-Steuerelement kannst Du viel mehr "anstellen" (davon gibt es auch jede Menge).
Füge mal eine Active-X-Checkbox in Deine Tabelle ein und mache dann einen Doppelklick darauf.
Da bist Du sofort in dem Code zu diesem Element:
Private Sub CheckBox1_Click()
End Sub
und kannst eingeben was bei einem Click passieren soll.
Jetzt klappe mal das Fenster in dem VBA-Editor auf -oben rechts über dem Code- in dem gerade "Click" steht.
Da siehst Du jede Menge andere Ereignisse, für die Du Programme schreiben kannst. Z.B. wenn es den Focus (Got Focus) erhält, oder Du Doppelklickst(DblClick), oder etwas geändert wird (Change).
Bei der Checkbox wirst Du das kaum brauchen, aber bei einem Textfeld oder Listenfeld lässt sich ja einiges mit anstellen.
Ich danke dir vielmals für deine Mühe! Du konnest mir sehr helfen. :D
Die Verknüpfung kann auch noch ganz anders passieren: in Eigenschaften findest Du Linked Cell. Weise dem eine adresse zu.
Schreibst Du -per Makro oder manuell- in diese Zelle WAHR oder FALSCH rein, wird das Häkchen gesetzt oder enfernt!
Oder Du kannst den Status des Kästchens auslesen.
Ist vllt leichter zu merken als die recht speziellen Befehle zum -wie war das doch gleich: "Formularsteruerelemenkontrollkästchen" (solche Tippfehler passieren eben dann bei sowas).
Die Anglophilen verarschen die Deutschen gerne wegen ihrer zusammengesetzten Bandwurmwörter, ich nehme an, die haben das nur deshalb mit den deutschen Benennungen stehen lassen. (haben ja sonst auch alles auf aenglisch umgestellt)
So, nach etwas "Stöberei" in Foren-Archiven bin ich auch noch auf die Lösung für ein Formularsteruerelemenkontrollkästchen (tolles Wort) gekommen
(von alleine wäre ich DARAUF nieeee gekommen).
Das klappt so:
Sub machwas()
If Worksheets("Mitarbeiter").Shapes("Check Box 1").DrawingObject.Value = 1 Then
MsgBox "Häkchen gesetzt!"
Else
MsgBox "Häkchen nicht gesetzt!"
End If
End Sub
Wenn Du die Wahl hast, würde ich Dir aber empfehlen ein Active-X-Steuerelement zu verwenden, die sind imho besser zu handlen.