Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Steuerelement "Kontrollkästchen" in Excel





Frage

Moin... habe folgedes Problem. Habe eine Excel Datenbank mit 4000 Einträgen und möchte ans Ende jeder Zeile ein Kontrollkästchen haben... Dieses Kontrollkästchen soll Bezug auf die Zelle haben, auf der es liegt (A1, A2, A3, - A4000), damit in der Zelle dementsprechend für den Eintrag in der Zeile der Wert "WAHR" oder "FALSCH" ausgegeben wird (je nach dem ob das Kästchen nun aktiviert ist oder nicht...) Benötige das ganze, um eine Mehrfachauswahl treffen zu können und die Daten via Formel auf ein extra Tabellenblatt kopieren zu können und habe definitiv keine Lust 4000 Kontrollkästchen zu zeichnen, diese auf Zellgröße zu ziehen und für jedes Kästchen einzeln den Bezug herzustellen. Hat jemand eine Idee? Vielen Dank im Voraus. Gruß Torben

Antwort 1 von Eleve

Hallo Torben

ich hab nur eine einfache Lösung ohne Code.
Mach doch einfach ein x in eine Hilfsspalte und Sortieren Deinen Datensatz dann nach den x und kopiere diese X-Zeilen dann in Dein neues Datenblatt.

Viele Grüße

Eleve

Antwort 2 von coros

Hi Torben,

und so sähe das als Makro aus. Kopiere nachfolgendes Makro in ein StandardModul und starte es über eine Befehlsschaltfläche.

Option Explicit

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

Mit dem Makro werden Dir 4000 Kontrollkästchen in Spalte A angelegt die den bezug auf der jeweils unter dem Kontrollkäschen liegenden Zelle haben. Ich bin von einer Zeilenhöhe von 17,5 ausgegangen. Wenn das bei Dir anders sein sollte, musst Du in dem Makro in der Zeile

Position = Position + 17.25

anpassen. Damit wird der Abstand zwischen den Kontrollkästchen eingestellt. Wenn Deine Zeilenhöhe kleiner als diese 17,5 Pixel sein sollten, wird Dir allerdings das Kontrollkästchen in Zelle A1 nicht in der Mitte positioniert, da sonst die erste Position unter 0 sein müsste und das geht nicht.

Ich hoffe, Du kommst klar. Bei Fragen melde Dich.

Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 3 von workaholic

Hi Oliver,

vielen Dank... Deine Lösung ist Gold wert...

Viele Grüße aus Bremen

Torben

Antwort 4 von coros

Moin Torben,

freut mich, dass ich Dir helfen konnte. Danke auch für die Rückmeldung.

MfG,
coros
Jeder macht was er will, keiner macht was er soll, aber alle machen mit.

Antwort 5 von andyp79

Hallo Oliver,

könnte man dieses Makro dahingehend erweitern, dass man bei der Positionierung jeweils die Eigenschaft "Von Zellposition und -größe abhängig" vorgibt. Falls ja, wie?

Ohne diese Eigenschaft werden die Kontrollkästchen nämlich leider nicht mitsortiert.

Gruß
Andreas

Antwort 6 von Beverly

Hi Andreas,

diese Eigenschaft gibt es für die Kontrollkästchen aus der Formular-Symbolleiste nicht, da musst du die ActiveX-Steuerelemente nehmen:
Sub Kontrollkaestchen_einfuegen()
    Dim Wiederholungen As Integer, Position As Double
    Application.ScreenUpdating = False
    Position = 0
    For Wiederholungen = 1 To 5
        With ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Left:=17.25, Top:=Position, Width:=24, Height:=17.75)
            .LinkedCell = "$A$" & Wiederholungen
            .Object.Caption = ""
            .Placement = 1
        End With
        Position = Position + 17.25
    Next Position
End Sub

Bis später,
Karin