2011-05-23 142 views
2

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

#1会员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

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

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

其中8是“复选框”的长度。

1

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