2.8k Aufrufe
Gefragt in Tabellenkalkulation von eleve Einsteiger_in (49 Punkte)
Hallo Leute,

ich verwende excel2000.
Ich habe ein Tabellenbaltt mit 260 Checkboxen, welche über die Steuerelement-Toolbox erstellt wurden.
Aus Eingabegründen kann ich kein Userform verwenden.
Je nachdem welche Checkboxen aktiviert sind, werden in andere Tabellenblätter Daten geschrieben.
Mein Problem ist, dass die Checkboxen wegen der Menge der Checkboxen schlecht zu aktivieren sind.
Jetzt möchte ich versuchen die Checkboxen durch anklicken der Zellen unter den Checkboxen zu aktivieren.
Kann mir jemand sagen, wie ich per VBA feststellen kann über welcher Zelle die Checkbox liegt?

Ich dank Euch schon mal für Eure Zeit

all the best

Eleve

7 Antworten

0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Eleve,

ich glaube, dass was Du vorhast, wird nicht funktionieren. Mir ist jedenfalls keine Methode bekannt, wie man herausfinden kann, über welcher Zelle sich eine Objekt befindet. Man kann zwar mit

Worksheets(1).CheckBox1.TopLeftCell.Address
herausfinden, über welcher Zelle sich ein Objekt, hier die CheckBox1, befindet, aber umgekehrt, keine Ahnung. Aber das muss ja nichts heißen, wenn ich es nicht weiß.

Ich vermute aber mal, dass Dir nichts anderes übrig bleibt als das nach folgendem Beispiel zu realisieren:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$D$9" Then CheckBox1 = True
If Target.Address = "$D$11" Then CheckBox2 = True
If Target.Address = "$D$13" Then CheckBox3 = True
End Sub

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von eleve Einsteiger_in (49 Punkte)
Hallo Oliver,

vielen Dank für die, wie immer, superschnelle Hilfe.
Ich denk mit Excel und der Möglichkeit des "Werte runterziehen" werde ich mein Problem mittels Deiner Anregung lösen.
Viel Fußarbeit aber es wird funktionieren.

Schöne Grüße

Eleve
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi,

weise jeder CheckBox eine LinkedCell zu. Mit folgendem Code werden die CheckBoxen dann aktiviert bzw. deaktiviert wenn die betreffende Zelle angefahren wird:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("F2:F200")) Is Nothing Then Target = Not Target = True
End Sub

Wenn es kein zusammenhängender Zellbereich ist, kannst du auch in einer Select Case Anweisung alle in Frage kommenden Adressen zusammenfassen:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Select Case Target.Address
Case "$F$2", "$F$4", "$F$6", "$H$25"
Target = Not Target = True
End Select
End Sub

Bis später,
Karin
0 Punkte
Beantwortet von eleve Einsteiger_in (49 Punkte)
Hallo Karin

Variante 1 funktioniert. Jetzt steht zwar in der Linked Cell "Wahr" oder "Falsch", aber da kann man ja mogeln und die Schriftfarbe auf weiß setzten ;-)

vielen Dank für die Hilfe

liebe Grüße

Eleve
0 Punkte
Beantwortet von eleve Einsteiger_in (49 Punkte)
Hallo Oliver,

ich habe Deine Idee modifiziert und so läuft es:

If Not Intersect(Target, Range("c5")) Is Nothing Then _
If CheckBox1 = True Then CheckBox1 = False Else If _
CheckBox1 = False Then CheckBox1 = True


Die Zeile schaltet die Checkbox bei Click auf die Zelle an oder aus.

Vielen Dank für Eure Hilfen

Problem gelöst.
Eleve
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi,

weshalb so kompliziert? Das Ganze funktioniert doch auch nach dem von mir geposteten Prinzip::
If Target.Address = "$C$5" Then CheckBox1 = Not CheckBox1 = True

Wenn du nur 1 Zelle ansprichst benötigst du kein Intersect.

Oder verwende die Select Case Methode:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Select Case Target.Address
Case "$F$2"
CheckBox1 = Not CheckBox1 = True
Case "$F$4"
CheckBox2 = Not CheckBox2 = True
Case "$F$6"
CheckBox3 = Not CheckBox3 = True
Case "$H$25"
CheckBox4 = Not CheckBox4 = True
End Select
End Sub

Bis später,
Karin
0 Punkte
Beantwortet von eleve Einsteiger_in (49 Punkte)
Liebe Karin,

Du hast vollkommen recht! Geht wirklich schneller und einfacher!
Konnte nur leider Deinen zweiten Vorschalg oben nicht umsetzten.
Mit dem letzten Post hat es geklappt.

Vielen Dank nochmal

Eleve
...