【问题标题】:Excel VBA automatically renaming checkboxesExcel VBA自动重命名复选框
【发布时间】:2011-08-29 13:11:03
【问题描述】:

我目前正在处理几个带有很多复选框的 Excel 工作表。 当您输入一个复选框时,它的名称为 CheckBox1、CheckBox2 等,但是否可以自动重命名它们? 在我的代码中,我现在必须将所有复选框重命名为 Rij11_1、Rij11_2 等。

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

有人知道怎么做吗?

非常感谢!

亲切的问候, 马克

【问题讨论】:

    标签: excel vba rename checkbox


    【解决方案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

    【讨论】:

    • 您好 Osknows,感谢您的回复。这绝对是一个好的开始,但它并不能很好地完成工作,即复选框从 1 到 ... 编号,并且它们不一定连续放置在一行中。是否可以单独选择一行并重命名该行中的所有复选框?如果我必须单独选择每一行,这对我来说没问题。提前非常感谢!亲切的问候,马克
    • 您好,Osknows,您能按原样输入整个代码吗?我自己不是程序员,我对你的回答和迪克库斯莱卡的回答有点困惑。非常感谢!亲切的问候,马克
    • 嗨,Osknows,这非常有效!非常感谢!我刚刚注意到,在编号 Rij11_9 之后,我得到了 Rij11_0,然后它从 1 到 9 重新开始。不应该包括 0,并且计数应该超过 9,例如从 1 到 27。这可以做到吗?亲切的问候,马克
    • @Marc,是的,只需将 Right(obj.Name, 1) 更改为 Mid(obj.Name, InStr(obj.Name, "CheckBox") + 8)
    • @Dave:这不起作用...我测试了它,我行中的第一个复选框以 Rij60_570 作为名称,而不是 Rij60_1。然而,在 Rij60_579 之后,它给了 Rij60_580,所以它确实继续超过 9... 亲切的问候,Marc
    猜你喜欢
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多