【问题标题】:Word VBA Array not behaving as expectedWord VBA 数组未按预期运行
【发布时间】:2019-12-23 17:06:55
【问题描述】:

我正在遍历一个关键字列表来定义文档中的术语,但只有某些关键字会被选中。

例如,使用 Array("Agreement", "deed", "AGREEMENT", "letter agreement", "letter", "Undertaking"), "Agreement" 和 "letter" 可以很好地选择,但是 letter协议和承诺没有。

我尝试重新排列数组的顺序,但没有任何效果。

我猜我误解了数组的一些基本原理。我更熟悉 python 并且正在使用列表功能。

完整代码如下。任何指针将不胜感激。

    Function getagree() As String

    Dim aggrlist As Variant
    aggrlist = Array("Agreement", "NDA", "deed", "AGREEMENT", "letter                         
    agreement", "letter", "Undertaking", "Confidentiality Undertaking",         
    "agreement")

    Set myRange = ActiveDocument.Content

    With myRange.Find
        For Each aggr In aggrlist
            .ClearFormatting
            .Text = aggr
            .MatchWholeWord = True
            .MatchCase = True
            .Execute Forward:=True
            If .Found = True Then
                getagree = aggr
            End If
        Next
    End With

    End Function

【问题讨论】:

  • 看起来你在字符串中间换了一个新行,我猜这是导致问题的原因。
  • 在模块顶部使用 Option Explicit 将有助于解决这些问题。

标签: arrays vba ms-word


【解决方案1】:

尝试使用下划线 (_) 将字符串分成多行...

aggrlist = Array("Agreement", "NDA", "deed", "AGREEMENT", _
                    "letter agreement", "letter", "Undertaking", _
                        "Confidentiality Undertaking", "agreement")

【讨论】:

    猜你喜欢
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    • 2014-11-12
    • 1970-01-01
    • 2020-06-28
    • 2012-02-18
    相关资源
    最近更新 更多