1

以下代码将复选框添加到一行单元格并使用单元格地址命名它们

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 复选框(即形状)。

4

0 回答 0