【发布时间】:2020-08-30 06:05:30
【问题描述】:
我有一个单词表,它有 2000 行。每行包含一些 EXTENT,即 10 Sq 的平方码(Sq. Yds)的土地面积。码到 70000 平方码。我必须过滤它,需要 Extent 超过 500 Sq 的行。码。在 2000 行中,我想使用 VBA Word 宏中的通配符过滤这些行,这样我将获得 500 和更多的 Extent,使行小于 500 Sq。码。要查找的文本是字符和数字的组合。我想过滤查找“EXTENT: ([5-9][0-9][0-9])”。 “EXTENT: XXXX”(数字)。
Sub FilterExtentUsingWildcards()
Application.ScreenUpdating = False
Dim TblRng As Range, TmpRng As Range
With ActiveDocument.Tables(1)
Set TblRng = .Range: Set TmpRng = .Range
With .Range
With .Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "<EXTENT:><space>([3-9][0-9][0-9])" 'FindText which is combination of
'characters, space and Number
.MatchWildcards = True 'i.e. "EXTENT: XXXX(number digits)
.Replacement.Text = ""
.Forward = True
.Format = False
.Wrap = wdFindStop
.MatchCase = True
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute
End With
Do While .Find.Found
If .InRange(TblRng) Then
TmpRng.Collapse wdCollapseEnd
TmpRng.FormattedText = .Rows(1).Range.FormattedText
.Rows(1).Delete
End If
.Find.Execute
Loop
End With
If .Rows.Count > TblRng.Rows.Count Then
.Split .Rows(TblRng.Rows.Count + 1)
End If
End With
Application.ScreenUpdating = True
End Sub
【问题讨论】:
-
请编辑您的问题,以便更具可读性。正如它现在所显示的那样,很难对此提供帮助。
-
欢迎来到 Stack Overflow!请使用tour 并通读help center,尤其是how to ask。你最好的选择是做你的研究,搜索关于 SO 的相关主题,然后试一试。在进行更多研究和搜索后,发布您的尝试Minimal, Complete, and Verifiable example,并具体说明您遇到的问题,这可以帮助您获得更好的答案。
标签: vba ms-word row wildcard word-table