2.5k Aufrufe
Gefragt in Tabellenkalkulation von afetinci Mitglied (183 Punkte)
Hallo Leute,

ich habe eine Tabelle in der ich bestimmte Daten zum ausdrucken wähle. Ich benutze momentan ein Makro, dass durch einen doppelklick ein "X" in der Zelle setzt, dieses x gibt mir dann in der Spalte BX eine 1 wieder damit diese für den Druck vorgemerkt wird. Das mit dem X ist nur optisch.

Kann ich über ein Code sagen, dass wenn ich in Spalte A: einen Wert habe mir ein Kontrollkästchen in Spalte F: eingefügt wird, das wiederum beim anklicken mir eine 1 in Spalte BX setzt. Dies soll dann für 2000 Zeilen gelten.

Gruß

8 Antworten

0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi,
Private Sub Worksheet_Change(ByVal Target As Range)
Dim chCheckbox As CheckBox
If Target.Column = 1 Then
If Target.Count = 1 Then
If Target <> "" Then
Set chCheckbox = ActiveSheet.CheckBoxes.Add(Cells(Target.Row, 5).Left, _
Cells(Target.Row, 5).Top, 20, Cells(Target.Row, 5).Height)
chCheckbox.LinkedCell = Cells(Target.Row, 76).Address
chCheckbox.Caption = ""
End If
End If
End If
End Sub

Beachte aber, dass bei einem erneuten Eintrag an der selben Stelle ein weiteres Controllkästchen eingefügt wird. Wenn dies nicht der Fall sein soll, musst du vorher prüfen, ob bereits ein Wert in der Zelle in Spalte A vorhanden ist.

Bis später,
Karin
0 Punkte
Beantwortet von afetinci Mitglied (183 Punkte)
kann man den Code auch so einstellen, dass wenn der Wert raus genommen wird, das Kontrollkästchen gelöscht wird.

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

ja, das ist möglich. Laufe in einer Schleife über alle Kontrollkästchen und prüfe, ob die TopLeftCell des Kontrollkästchens mit der TopLeftCell von Cells(Target.Row, 5) übereinstimmt. Wenn ja, dann lösche es.

Bis später,
Karin
0 Punkte
Beantwortet von afetinci Mitglied (183 Punkte)
Hi Karin,

Sorry das ich mich so spät melde, war jedoch nicht im Büro. Mit dem Einfügen klappt es wunderbar. Kann ich aber auch sagen, dass wenn kein Wert in Spalte A ist, die Checkbox dann in der Selben Zeile gelöscht wird, also nur für die Selbe Zeile.

Ah ja noch: Die Spalte ist jetzt auf B gerutscht. :-)

Gruß und Vielen Dank für deine Antworten!!!!

afetinci
0 Punkte
Beantwortet von afetinci Mitglied (183 Punkte)
Hi Karin,

sorry, das ich dich nerve aber ist es auch möglich das Kontrollkästchen, Vertikal wie Horizontal zu zentrieren???

Gruß
afetinci
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi,
Private Sub Worksheet_Change(ByVal Target As Range)
Dim chCheckbox As CheckBox
If Target.Column = 1 Then
If Target.Count = 1 Then
If Target <> "" Then
Set chCheckbox = ActiveSheet.CheckBoxes.Add(Cells(Target.Row, 2).Left, _
Cells(Target.Row, 2).Top, 20, Cells(Target.Row, 2).Height)
chCheckbox.LinkedCell = Cells(Target.Row, 76).Address
chCheckbox.Caption = ""
chCheckbox.Left = Columns(2).Left + (Columns(2).ColumnWidth + chCheckbox.Width) / 2
Else
For Each chCheckbox In ActiveSheet.CheckBoxes
If chCheckbox.TopLeftCell.Address = Cells(Target.Row, 2).Address Then
chCheckbox.Delete
Exit For
End If
Next chCheckbox
End If
End If
End If
End Sub

Vertikal zentrieren kann man die CheckBoxen nicht, denn in dem Fall wenn die Zellenhöhe kleiner als die CheckBox-Höhe ist, würde sie nicht mehr in der betreffenden Zeile liegen und könnte nicht mehr ausgelesen werden.

Bis später,
Karin
0 Punkte
Beantwortet von afetinci Mitglied (183 Punkte)
Guten Morgen Karin,

dein Code funktioniert einwandfrei. Wenn du mir nur sagen würdest wo ich das Kästchen in 3D formatierten könnte, also auch über Code. Vielen Dank!

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

das lässt sich mit dem Makrorekorder aufzeichnen ;-))).
chCheckbox.Display3DShading = True

Bis später,
Karin
...