Excel vba重命名复选框

| 我有一个包含许多复选框的工作表。 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继续,导致该行中的名称重复。 有谁可以帮助我解决这个重新编号的问题? 非常感谢! 亲切的问候, 渣     
已邀请:
这是摆脱这些麻烦的简单方法。突出显示您要在其中删除复选框和相关文本的列或单元格。然后使用CTRL + C剪切它们,然后将其移动到另一张纸中,将其粘贴。 (如果说您要删除一列复选框,但保留另一列,或删除随机复选框,则此方法)。现在按F5,然后依次单击“特殊”和“对象”(在粘贴了要删除的对象的工作表上),将它们全部选中,现在就剪切它们,完成! :)     
问题出在内部If语句中的ѭ1。重命名只会将旧对象名称的最右边字符粘贴到新名称的末尾。尝试将其替换为以下内容:
Right(obj.Name, Len(obj.Name) - 8)
其中8是\“ CheckBox \”的长度。     

要回复问题请先登录注册