重命名循环中的复选框

时间:2013-10-14 17:38:51

标签: excel vba excel-vba

以下代码为一行单元格添加了复选框,并使用单元格地址

命名它们
Dim CBX As CheckBox
    For x = 3 To 9
        With Cells(LastRow + 1, x)
            Set CBX = .Parent.CheckBoxes.add _
                        (Top:=.Top, _
                         Left:=.Left, _
                         Width:=.Width, _
                         Height:=.Height)
            CBX.Name = "ChkBox_" & .Address(0, 0)
            CBX.Caption = ""
            CBX.Value = xlOff
        End With
    Next x

我需要用户能够在任何给定时间删除一行以及驻留在其中的复选框 - 因此下面的代码

Dim strAgent As Long
strAgent = InputBox("Please enter the row number you wish to delete. WARNING - THIS CANNOT BE UNDONE")

Sheets(1).Shapes("ChkBox_C" & strAgent).Delete
Sheets(1).Shapes("ChkBox_D" & strAgent).Delete
Sheets(1).Shapes("ChkBox_E" & strAgent).Delete
Sheets(1).Shapes("ChkBox_F" & strAgent).Delete
Sheets(1).Shapes("ChkBox_G" & strAgent).Delete
Sheets(1).Shapes("ChkBox_H" & strAgent).Delete
Sheets(1).Shapes("ChkBox_I" & strAgent).Delete

Rows(strAgent).EntireRow.Delete

我遇到的问题是,一旦用户删除了行并且所有内容都被移动,复选框名称就不再正确引用它们所在的单元格。

如何遍历这些单元格中的所有复选框并根据新位置重命名?

注意:我使用表单控件复选框而不是activex复选框(即形状)。

0 个答案:

没有答案