Excel vba重命名checkbox

我有一个包含许多checkbox的工作表。 Excel自动命名为CheckBox1,CheckBox2等…但是,对于我的文档,我需要将它们全部重命名为Rij11_1,Rij11_2等(Rij11是第11行,_1是该行中的第一个checkbox,依此类推) 。 对每一行重新命名_1开始是很重要的。

Stackoverflow成员Osknows和Dave DuPlantis帮助我已经在这一个(感谢您的所有帮助很远,所以远),与此代码:

Sub test() Dim obj As OLEObject, ChkBoxRow as long ChkBoxRow = 11 With Worksteets("Storia") For Each obj In .OLEObjects If TypeName(obj.Object) = "CheckBox" Then if obj.TopLeftCell.Row = ChkBoxRow then obj.Name = "Rij11_" & Right(obj.Name, 1) end if End If Next obj End With End Sub 

但是,每行上的第一个重命名的checkbox并不是从1开始的(通常是7,由于某种原因逃脱了我),并且如果在一行中有多于10个checkbox,则编号不会超过10。 ,我得到_0而不是_10,然后在_0之后再次继续_1,导致行中的名称重复。

有没有人能帮我解决这个重新编号问题?

非常感谢!

亲切的问候,马克

这是一个简单的方法来摆脱这些。 突出显示要删除checkbox和关联文本的列或单元格。 然后使用CTRL + C剪切它们,然后移动到另一个表格中,粘贴它们。 (这种方法是,如果你想删除一列checkbox,但保留另一个,或删除随机checkbox)。 现在点击F5,然后是Special,然后点击Objects(在你粘贴的表格上删除),它们全部被选中,现在只需剪切它们,完成! 🙂

问题是在内部的If语句中的Right(obj.Name, 1) 。 重命名只会将旧对象名称的最右边的字符粘贴到新名称的末尾。 尝试用以下代替它:

 Right(obj.Name, Len(obj.Name) - 8) 

其中8是“checkbox”的长度。