添加checkbox使用vba emptyrow

我有以下代码:

Private Sub CheckBox1_Click() Dim MyLeft As Double Dim MyTop As Double Dim MyHeight As Double Dim MyWidth As Double dim emptyRow as long emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1 MyLeft = Cells(emptyRow, 1).Left MyTop = Cells(emptyRow, 1).Top MyHeight = Cells(emptyRow, 1).Height MyWidth = MyHeight = Cells(emptyRow, 1).Width If CheckBox1.Value = True Then ActiveSheet.CheckBoxes.Add(MyLeft, MyTop, MyWidth, MyHeight).Select With Selection .Caption = "" End With End If End Sub 

但由于某种原因,checkbox不会每次都添加到emptyrow,而是使checkbox保存列/行一遍又一遍…我该如何解决这个问题?

由于您的位置由WorksheetFunction.CountA(Range("A:A"))CountA仅计算单元格条目。 所以添加checkbox不会导致计数增加

调整它的一种方法是通过增加形状来增加行数

emptyRow = WorksheetFunction.CountA(Range("A:A")) + ActiveSheet.CheckBoxes.Count

其他选项将是

  • 存储单元格中添加的Checkboxes的数量或范围名称。
  • 向空单元格添加白色文本(以增加CountA(Range("A:A")

如果您的所有checkbox都在列A中,除了代码所附的那个checkbox,您可以设置空行:

  emptyRow = ActiveSheet.CheckBoxes.Count 

或者一些变化(可能与CountA)取决于你是否要填充每个单元格,或只是不包含值的单元格。

如果你可能在工作表的其他区域有checkbox,你可能需要循环遍历每一个,看看他们在哪个列 – 这些将是那些与.Left = 0; 并用在你的数量。