Excel 使用vba将复选框添加到emptyrow
我有以下代码:Excel 使用vba将复选框添加到emptyrow,excel,vba,Excel,Vba,我有以下代码: 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 M
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中,而是使复选框反复保存列/行。。。如何解决此问题?因为您的位置是由
工作表函数设置的。CountA(范围(“A:A”)
和CountA
仅统计单元格条目。因此,添加复选框不会导致计数增加
调整它的一种方法是通过在添加形状时增加行数来调整行数
emptyRow=WorksheetFunction.CountA(范围(“A:A”)+ActiveSheet.checkbox.Count
其他的选择是
- 存储单元格中添加的
复选框的数量或范围名称
- 向空单元格中添加白色文本(以增加计数A(范围(“A:A”))
emptyRow = ActiveSheet.CheckBoxes.Count
或者根据您是要填充每个单元格,还是只填充不包含值的单元格,使用CountA进行更改
如果您可能在工作表的其他区域中有复选框,您可能必须循环检查每个复选框,以查看它们在哪一列中--这些是带有.Left=0的复选框;并在计数中使用这些复选框。复选框是覆盖工作表的对象。它不能是“in”一个单元格,因此它将永远不会使该单元格不为空,由COUNTA计数。您可以在ActiveSheet.复选框中循环查找具有最低Top属性的单元格,然后从中递增。