繁体   English   中英

使用vba将复选框添加到emptyrow

[英]add checkboxes to emptyrow using 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
        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

但是由于某种原因,复选框不会每次都添加到空行中,而是使复选框一次又一次地保存列/行...我该如何解决?

因为您的位置是由WorksheetFunction.CountA(Range("A:A"))并且CountA单元格条目进行计数。 因此,添加复选框不会导致计数增加

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

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

其他选择是

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

如果您所有的复选框都在A列中(除了附带代码的复选框),则可以设置空行:

 emptyRow = ActiveSheet.CheckBoxes.Count

或它的某种变体(也许是CountA),取决于您是要填充每个单元格,还是只填充不包含值的单元格。

如果您可能在工作表的其他区域中使用复选框,则可能不得不循环浏览每个复选框以查看它们所在的列,即.Left = 0的那些; 并在您的计数中使用它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM