使用循环读取复选框值(Microsoft Word VBA)

问题描述:

我目前正在尝试编写一个宏(Word中的VBA),它可以将文档集合中的信息编译为单个文档。使用循环读取复选框值(Microsoft Word VBA)

我要做到这一点我有一个约20个复选框的列表,这些复选框将决定我想在编译中包含哪些文档。我的问题是,在编写宏时,我无法找出一种方法来检查列表中每个复选框的状态,而不用重写相同的代码块20次,只更改复选框的名称。例如每次CB1到CB2,CB3 CB4等。

这是有问题的代码块。如果我多次重写它的变化复选框数它的工作,但我宁愿它在一个循环,使代码更紧凑和坚固的:

If ThisDocument.CB1.Value = True Then 

Documents.Open(directory).Activate 
Selection.WholeStory 
Selection.Copy 
Documents(NewFile).Activate 
Selection.Paste 
Documents("file.docx").Close 

End If 

理想我想有复选框命名的东西像CBn,其中n是我可以在每个循环结束时重新定义的变量。

有直接提到它的名字控制任何选项 - 你可以用,最多的功能,但:

Sub Tester() 
    Dim x As Long, cb As Object 
    For x = 1 To 3 
     'find the checkbox 
     Set cb = ControlByName("CB" & x, ThisDocument) 
     'check we got something back 
     If Not cb Is Nothing Then 
      Debug.Print "CB" & x & " is " & cb.Value 
     End If 
    Next x 
End Sub 

Function ControlByName(sName, doc As Document) As Object 
    Dim obj 
    For Each obj In doc.InlineShapes 
     If obj.OLEFormat.Object.Name = sName Then 
      Set ControlByName = obj.OLEFormat.Object 
      Exit Function 
     End If 
    Next obj 
End Function