Excel VBA: Kontrollkästchen einfügen

Squidee

Enthusiast
Thread Starter
Mitglied seit
10.10.2007
Beiträge
1.508
Moin,

ich baue mir gerade eine Exceltabelle als Checkliste zusammen, bei der ich ein Kontrollkästchen abharke und eine Zeile als erledigt abgeharkt bzw. eingefärbt wird. Soweit auch alles gut - mit meinem Testkästchen hat auch alles geklappt.

Jetzt brauch ich aber ein paar hundert Kontrollkästchen, die ich wohl am einfachsten mit VBA eingefügt bekomme, da jedes Kästchen den Bezug mit der darunter liegenden Zelle herstellen muss.

Dazu hab ich auch relativ schnell einen passenden Code gefunden:
Code:
Option Explicit

Sub Kontrollkästchen_einfügen()
Dim Wiederholungen As Integer, Position As Double
Application.ScreenUpdating = False
Position = 0
For Wiederholungen = 1 To 300
With ActiveSheet.CheckBoxes.Add(18, Position, 24, 18)
.LinkedCell = "$A$" & Wiederholungen
.Characters.Text = ""
End With
Position = Position + 18
Next
End Sub

Das funktioniert auch soweit wunderbar, allerdings hat der Code eine, vllt. zwei Schwächen.

Zum einen beginnt das Einfügen immer bei A1 (also A1 bis A300). Was muss ich einstellen, damit das Makro stattdessen die Kästchen bei B5 bis B305 einfügt?

Zum anderen positioniert das Makro jedes Kontrollkästchen zentriert in jeder Zelle. Ich hätte aber gerne, das jedes Kästchen links oben angeklinkt wird.
Ich könnte die natürlich auch per ALT-Taste manuell anklinken, aber vllt geht das ja auch per VBA.


Sry, falls die Frage nooblike ist, aber das bin ich nunmal. Ich hab von programmieren null Ahnung ^^
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Hi,

ich habe kein Excel (nur OpenOffice), kann es also nicht testen.
Aber die Frage wie man aus Zeile A Zeile B macht sollte in diesem Code-Abschnitt stecken:
Code:
.LinkedCell = "$A$" & Wiederholungen

Dort statt $A$ deine gewünschte Zeile eintragen, z.B. $B$.

Zum Positionieren:
Wenn die Kästchen in einer Spalte sind sollte es kein Problem geben.
Also z.B. die Kästchen sind von B1-B300. Dann einfach in B1 klicken, runter scrollen bis du B300 siehst, Shift-Taste drücken und in B300 klicken. Nun sollten alle Zellen von B1-B300 markiert sein. Dann einfach Format - Zelle - Ausrichtung.

Mfg.
 
Zuletzt bearbeitet:
Wenns denn so einfach wäre, aber sorry: Zweimal falsch ^^
.LinkedCell = "$A$" bedeutet, dass das Kontrollkästchen dazu einen Zellbezug herstellt, d.h. dass in der Zelle bzw. Spalte damit das Ergebnis WAHR oder FALSCH ausgegeben wird.
Der Wert war auch mein erster Gedanke ;)

Und das mit dem Zellen markieren:
Das nützt gar nichts, weil die Kästchen als Objekt auf einer anderen Ebene auf den Zellen drauf liegen. Ich könnte höchsten mit gedrückter Strg-Taste alle einzeln markieren und dann per Hand verschieben. Aber das 300 mal oder mehr? Puuuuh ^^

Andere Lösungsvorschläge? :)
 
Hi,

ok, ich habe den Code auch nur flüchtig überflogen :)

Beim genaueren hinsehen ist dies glaube ich die Zeile, die du modifizieren musst:
Code:
With ActiveSheet.CheckBoxes.Add([B]18, Position[/B], 24, 18)
und 
[B]Position [/B]= Position + 18
die Funktion heißt
Code:
 ActiveSheet.CheckBoxes.Add(Position_links, Position_oben , Breite, Höhe)
also ist 18= x-Position ( je höher desto weitere rechts, also für Spalte B statt A einfach z.B 36 eintragen).

Da musst du mit den 2 Zahlen spielen (18 und Position+irgendwas), bis die Kästchen da hin wandern wo du willst :)

Mfg.
 
So, ich habe heute mal ein wenig mit den Werten rumgespielt wie du es vorgeschlagen hattest.

Es hat tatsächlich geklappt; danke dir! :)
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh