使用变量循环 ActiveX 复选框

loop ActiveX checkboxes with a variable

我在一个 Word 文档中有许多名为 'CheckBox1'、'CheckBox2' 等的 ActiveX 复选框

我有一个私人子程序,当单击一个按钮时,它会查看这些复选框,如果勾选了某些复选框,它 运行 就是一个宏。如果我使用 me.CheckBox1、me.CheckBox2 等单独访问复选框,代码工作正常,但我希望能够 运行 一个循环 运行 像 me.checkBox[变量],但我无法让它工作。有任何想法吗?谢谢!

跟进: 我已经尝试了蒂姆亲切地放在下面的代码,但是我仍然无法以有意义的方式使用复选框。我已经输入:

Sub checkCheckBox()

    Dim obj, i As Long
    Dim boxName As String
    
    For i = 1 To 10
        Set obj = GetControlByName(ThisDocument, "CheckBox" & i)
        boxName = obj.Name
        If ThisDocument.boxName.Value = True Then
            .... ' do something
        End If
        
    Next i

End Sub

如果我使用 ThisDocument.CheckBox1.Value 并按此方式对其进行硬编码,但它不喜欢该变量。

没有直接的方法,但你可以创建一个函数来按名称查找控件:

Sub Tester()

    Dim obj, i As Long
    
    For i = 1 to 10
        Set obj = GetControlByName(ThisDocument, "CheckBox" & i)
        Debug.Print obj.Name 'do something with the checkbox...
    Next i

End Sub


Function GetControlByName(doc As Document, nm As String) As Object
    Dim obj, rv As Object
    For Each obj In doc.InlineShapes
        If Not obj.OLEFormat Is Nothing Then
            If obj.OLEFormat.Object.Name = nm Then
                Set GetControlByName = obj.OLEFormat.Object
                Exit Function
            End If
        End If
    Next obj
End Function