重命名循环中的checkbox

以下代码将checkbox添加到一行单元格中,并使用单元格地址对其进行命名

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 

我需要用户能够在任何给定时间删除一行,并在其中的checkbox – 因此下面的代码

 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 

我有这个问题,一旦用户删除行,一切都被移动,checkbox名称不再正确地引用它们所在的单元格。

我如何遍历这些单元格中的所有checkbox,并根据它们的新位置对它们进行重命名?

注意:我使用表单控件checkbox而不是activexcheckbox(即形状)。