0
我有一張工作表,如果範圍不爲空,我將添加複選框。 但我也想要的是,如果此範圍減少其值(例如從5到3),我想要刪除這些其他複選框。vba動態刪除範圍內的複選框
但後來我刪除了2行,所以我期待的是,這些複選框太刪除,但是當我再次我運行代碼仍然獲得這些複選框:
這是我到目前爲止已經試過和它的一部分,我從THIS答案了,但它沒有工作:
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
任何建議都會有所幫助!我真的相信這個問題是下面這部分:
If cb.ShapeRange.Item(1).TopLeftCell.Address = _
ActiveCell.Address Then obj.Delete
End If
我沒有嘗試過的東西,但如我所料 – paulinhax
它沒有工作'lastrow = ws.Cells(Rows.Count,「E」)。End(xlUp).Row'如果Col E中沒有內容,那麼空行將不會被處理 –
我明白了......我使用了相同的例子因爲我在這裏打印並沒有改變...它應該刪除複選框,如果相應的行現在是空的 – paulinhax