【问题标题】:VBA: How to loop through labels (not on a userform)?VBA:如何遍历标签(不在用户窗体上)?
【发布时间】:2015-12-06 06:01:44
【问题描述】:

我的 Word 文档有许多 ActiveX 标签。 [不是文本框:我原来的标题有误。]

我想要一个宏来循环遍历它们以对它们中的每一个执行操作(更改标题),但我不知道如何识别它们。

如果他们在用户表单上,我会说: For each aLabel in UserForm1.Controls

但这不适用于我的情况。

【问题讨论】:

    标签: vba controls ms-word


    【解决方案1】:

    假设它是您正在使用的文本框,根据标题而不是问题,文档的 Shapes 集合可能就是您所追求的:

    Sub ShapeLoop()
    
        Dim shp As Shape
    
        For Each shp In ThisDocument.Shapes
            ' Test if shp is one you're interesed in, perhaps using shp.Name
            Debug.Print shp.Name
            ' Do Stuff
        Next shp
    
    End Sub
    

    编辑:

    字段集合再次相同

    Sub FieldLoop()
    
        Dim fld As Field
    
        For Each fld In ThisDocument.Fields
            If TypeName(fld.OLEFormat.Object) = "Label" Then
                Debug.Print fld.OLEFormat.Object.Caption
                fld.OLEFormat.Object.Caption = "New Caption"
            End If
        Next
    
    End Sub
    

    【讨论】:

    • 对不起,我确实是指标签而不是文本框。我尝试了您的建议以防万一,但它没有捕获标签。
    • 好的,请参阅我的答案的更新。您可以使用 Fields 集合来获取对象,并检查它的“标签”类型并设置标题等。
    猜你喜欢
    • 2019-08-07
    • 1970-01-01
    • 1970-01-01
    • 2016-11-16
    • 2021-05-12
    • 2015-09-05
    • 2018-02-20
    • 2011-08-14
    • 1970-01-01
    相关资源
    最近更新 更多