Ich habe ein Blatt, wo ich CheckBoxes hinzufügen, wenn ein Bereich nicht leer ist. Aber was ich will ist, dass dynamisch, wenn dieser Bereich seinen Wert verringert (geht von 5 bis 3, zum Beispiel) Ich möchte diese anderen CheckBoxen löschen.VBA zum dynamischen Löschen von Kontrollkästchen aus einem Bereich
Zum Beispiel habe ich 4 gefüllt Zeilen und meinen Code hinzugefügt 4 Kontrollkästchen:
Aber dann löschte ich zwei Reihen, so dass ich es erwartet hatte diese Kontrollkästchen auch gelöscht wurden, aber wenn ich führen Sie den Code wieder ich noch diese Kontrollkästchen erhalten:
Dies ist, was ich versucht habe, so weit und ein Teil davon nahm ich von THIS Antwort, aber es hat nicht funktioniert:
Option Explicit
Sub AddCheckbox()
Dim i As Long, lastrow As Long, rng As Range
Dim ws As Worksheet
Dim obj As OLEObject, cb As MSForms.CheckBox
Set ws = Sheets("Consulta")
lastrow = ws.Cells(Rows.Count, "E").End(xlUp).Row
For i = 5 To lastrow
If Not IsEmpty(ws.Range("E" & i, "J" & i)) Then
For Each rng In ws.Range("D" & i)
ws.OLEObjects.Add "Forms.CheckBox.1", Left:=rng.Left, Top:=rng.Top, Width:=rng.Width, Height:=rng.Height
Next
ElseIf IsEmpty(ws.Range("E" & i, "J" & i)) Then
For Each obj In ws.OLEObjects
If TypeOf obj.Object Is MSForms.CheckBox Then
Set cb = obj.Object
If cb.ShapeRange.Item(1).TopLeftCell.Address = _
ActiveCell.Address Then obj.Delete
End If
Next
End If
Next
End Sub
Irgendwelche Vorschläge helfen! Ich glaube wirklich, dass das Problem mit diesem Teil ist unten:
If cb.ShapeRange.Item(1).TopLeftCell.Address = _
ActiveCell.Address Then obj.Delete
End If
ich etwas ähnlich der versucht hat, aber es hat nicht funktioniert, wie ich – paulinhax
erwartet 'lastrow = ws.Cells (Rows.Count," E "). Ende (xlUp) .Row" wenn es keinen Inhalt in Col E gibt, dann werden die leeren Zeilen nicht verarbeitet –
Ich sehe das ... Ich habe das gleiche Beispiel verwendet wie ich hier druckte und nichts änderte ... Es sollte die Checkboxen löschen, wenn die entsprechende Zeile jetzt leer ist – paulinhax