Excel VBA自动重命名复选框

时间:2011-05-20 10:11:29

标签: excel vba rename checkbox

我目前正在制作一些包含大量复选框的Excel工作表。 当您输入复选框时,它具有名称CheckBox1,CheckBox2等,但是是否可以自动重命名它们? 在我的代码中,我现在必须将所有复选框重命名为Rij11_1,Rij11_2等。

如果可以自动逐行完成,那将节省我很多时间。

有人知道怎么做吗?

非常感谢!

亲切的问候, 马克

1 个答案:

答案 0 :(得分:1)

假设复选框位于工作表名为Sheet1

的工作表上
Sub test()

Dim obj As OLEObject, ChkBoxRow as long

ChkBoxRow = 1 'Only change checkboxes with topleft corner in row 1

With Sheet1
'Loop AX controls
For Each obj In .OLEObjects
    'Check for checkbox only
    If TypeName(obj.Object) = "CheckBox" Then

        'Examples to identify location (as suggested by Dick Kusleika)
        'ChkBoxRow = obj.TopLeftCell.Row
        'ChkBoxCol = obj.TopLeftCell.Column
        'ChkBoxAdd = obj.TopLeftCell.Address

        'ChkBoxRow = obj.BottomRightCell.Row
        'ChkBoxCol = obj.BottomRightCell.Column
        'ChkBoxAdd = obj.BottomRightCell.Address
        'etc

        if obj.TopLeftCell.Row = ChkBoxRow then
           obj.Name = "Rij11_" & Right(obj.Name, Len(obj.Name) - 8)
        end if

    End If
Next obj
End With
End Sub

我已经更新了显示一个很好的方法Dick Kusleika,指出前几天找到复选框所在的位置。您可以测试If obj.TopLeftCell.Row = 1 Then