首页 > 解决方案 > 如果满足条件,如何删除书签之前的一串文本?

问题描述

首先,我是这方面的新手。

情况如下: 生成文档时,VBA 宏正在编辑 Word 模板。我需要通过删除一组文本字符串 (A) 并将其替换为不同的文本字符串 (B) 来改进 VBA 宏,条件是在文档中可以找到另一个特定的文本字符串 (C)。

有一个布尔函数

Function findrange(tekst As String) As Boolean
    Set place = Documents(ActiveDocument.Name).Content
    If place.Find.Execute(findtext:=tekst) = True Then
        findrange = True
    Else
        findrange = False
    End If
End Function

通过它我可以确定是否在文档中找到了该文本字符串 (A)。到目前为止,一切都很好。

我需要的是删除该文本字符串(A),如果它在文档中找到,条件是在文档中可以找到另一个文本字符串(C)。

我该怎么做?我试过了

If findrange("C") = True Then
    If findrange("A") = True Then place.Text = ""

但是 If True Then 显然不允许嵌套 Ifs。

标签: vbams-word

解决方案


您需要设置两个 Range 变量。

Dim rngA as Word.Range
Dim rngC as Word.Range

然后在使用 findRange 函数找到 Text(A) 后,您需要将找到的范围存储在 rngA 变量中。

Set rngA = place.Range

接下来,使用 Text(C) 再次运行 findRange 函数,假设找到它,您可以将 rngA.text 替换为 Text(B) 数据。


推荐阅读