我有以下代码:
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
但由于某种原因,复选框每次都不会添加到emptyrow,而是会复选框一次又一次地保存列/行...我该如何解决这个问题?
答案 0 :(得分:1)
因为您的位置由WorksheetFunction.CountA(Range("A:A"))
设置,CountA
仅计算单元格条目。因此添加复选框不会导致计数增加
调整它的一种方法是通过在添加形状时递增来调整行数
emptyRow = WorksheetFunction.CountA(Range("A:A")) + ActiveSheet.CheckBoxes.Count
其他选项是
Checkboxes
的数量。CountA(Range("A:A")
)答案 1 :(得分:1)
如果所有复选框都在A列中,但附加代码的除外,您可以设置空行:
emptyRow = ActiveSheet.CheckBoxes.Count
或其中的一些变体(可能与CountA一起)取决于您是要填充每个单元格,还是仅填充不包含值的单元格。
如果你可能在工作表的其他区域有复选框,你可能需要遍历每个区域以查看它们所在的列 - 那些是.Left = 0的列;并使用你的计数。