2.5k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo Leute,

da ich gesehen habe das hier echt welche Ahnung haben suche ich hier mal Hilfe.

Also ich habe eine Liste erstellt bis dahin auch alles geschafft. Ich habe vier Spalten
mit Kontrollkästchen (Spalte Q, R, S, T ab Zeile 2) die jeweils einen Zellbezug zu
einem anderen Kästchen haben (AQ , AR, AS, AT ab Zeile 2).

So mein Problem ist das diese Liste insgesamt bis zur Zeile 1001 geht und ich
habe wenig Lust für 4000 Kontrollkästchen jeweils einen Zellbezug zu erstellen.

Leider kenne ich mich mit Makros absolut nicht aus.

Kann mir da jemand helfen?

Liebe Grüße
Marcus

9 Antworten

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

ich würde mir die vielen Kontrollkästchen ersparen. Verwende stattdessen lieber das Doppelklick-Ereignis auf die Zellen im Bereich der Spalten Q:T, um dort z.B. ein "x" eintragen bzw. wieder löschen zu lassen und in die Spalten AQ:AT dann WAHR bzw. FALSCH. Das kannst du mit folgendem Code:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Row > 1 And Target.Row < 1002 Then
Select Case Target.Column
Case 17, 18, 19, 20
Cancel = True
If Target <> "x" Then
Target = "x"
Target.Offset(0, 26) = True
ElseIf Target = "x" Then
Target.ClearContents
Target.Offset(0, 26) = False
End If
End Select
End If
End Sub


Mache dazu einen Rechtsklick auf den Tabellenreiter -> Code anzeigen und kopiere den Code in das rechte (obere) Codefenster.

Bis später,
Karin
0 Punkte
Beantwortet von
Also ich habe folgenden Code:

Option Explicit

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

Mein Problem ist jetzt aber noch das dieser Code die Kästchen in die Spalte A
setzt...wie kann ich das beeinflussen in welche spalte er startet also die position
genau festlegen?

Beste Grüße

Schlinkie

PS: Danke Beverly für den Lösungsvorschlag. Leider muss ich das ganze mit
Kontrollkästchen basteln, weil dies so gewünscht wird...
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo,

hier werden die Kontrollkästchen in Spalte C eingefügt:

Sub Kontrollkästchen_einfügen()
Dim L1, Wiederholungen As Integer

Application.ScreenUpdating = False

For Wiederholungen = 1 To 1000
L1 = (Cells(Wiederholungen, "C").Width - 24) / 2 'notwendig zum Zentrieren
With ActiveSheet.CheckBoxes.Add(Cells(Wiederholungen, "C").Left + L1, Cells(Wiederholungen, "C").Top, 24, 17.25)
.LinkedCell = "$AQ$" & Wiederholungen
.Characters.Text = ""
End With
Next

Application.ScreenUpdating = True

End Sub


Um das Makro an deine Bedürfnisse anzupassen, ersetze alle "C" durch die Spalte, in die die Kontrollkästchen eingefügt werden sollen.

Gruß

M.O.
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi,

wenn es denn unbedingt Kontrollkästchen sein müssen:

Sub Kontrollkästchen_einfügen()
Dim lngZeile As Long
Dim intSpalte As Integer
Application.ScreenUpdating = False
For intSpalte = 17 To 20
For lngZeile = 2 To 10
With ActiveSheet.CheckBoxes.Add(Cells(lngZeile, intSpalte).Left, _
Cells(lngZeile, intSpalte).Top, 24, 17.25)
.LinkedCell = Cells(lngZeile, intSpalte).Offset(0, 26).Address
.Characters.Text = ""
End With
Next
Next intSpalte
End Sub


Bis später,
Karin
0 Punkte
Beantwortet von
Klasse Leute,

super ich habe es hinbekommen.

Gibt es auch ein Makro mit dem ich die Kontrollkästchen in einer bestimmten Spalte alles aktivieren oder deaktivieren
kann?

Gruß Marcus
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Marcus,

ja, so ein Makro kann man erstellen - damit ist deine Frage eigentlich beantwortet ;-)

Sub Kontrollkaestchen()
Dim chkElement As CheckBox
For Each chkElement In ActiveSheet.CheckBoxes
If chkElement.TopLeftCell.Column = 2 Then chkElement.Value = 1 ' aktivieren
If chkElement.TopLeftCell.Column = 2 Then chkElement.Value = -4146 ' deaktivieren
Next chkElement
End Sub


Hier werden die Komntrollkästchen in Spalte B berücksichtigt - musst du an deine Bedingungen anpassen.


Bis später,
Karin
0 Punkte
Beantwortet von
Welchen Punkt davon muss ich denn ändern um die Spalten zu beeinflussen?
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
In diesem Teil

chkElement.TopLeftCell.Column = 2


ist die Spalte festgelegt.

Bis später,
Karin
0 Punkte
Beantwortet von
Vielen Dank meine Tabelle ist nun komplett..Danke =)
...