我有一个包含许多复选框的工作表。 Excel将这些自动命名为CheckBox1,CheckBox2等...但是,对于我的文档,我需要将它们全部重命名为Rij11_1,Rij11_2等(Rij11是第11行,_1是该行中的第一个复选框,依此类推) 。 重要的是每行重新开始_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
但是,每行上的第一个重命名复选框不会从1开始(通常是7,因为某些原因让我失望),如果一行中有超过10个复选框,则编号不会超过10在_9之后,我得到_0而不是_10然后,在_0之后,它再次继续_1,导致行中的名称重复。
有没有人可以帮我解决这个重新编号问题?
非常感谢!
亲切的问候, 马克
答案 0 :(得分:1)
这是摆脱这些的简单方法。突出显示要删除复选框和关联文本的列。然后使用CTRL + C剪切它们,然后移动到另一张纸上,粘贴它们。 (此方法是,如果您要删除一列复选框但保留另一列,或删除随机复选框)。现在点击F5,然后点击特别,然后点击对象(在你粘贴的页面上删除),它们都将被选中,现在只需剪切它们,完成! :)
答案 1 :(得分:0)
问题在于内部If语句中的Right(obj.Name, 1)
。重命名仅将旧对象名称的最右侧字符粘贴到新名称的末尾。尝试使用以下内容替换它:
Right(obj.Name, Len(obj.Name) - 8)
其中8是“CheckBox”的长度。