我会因为我对visual basic的有限知识而提前道歉,但我正在尝试编写一个宏来搜索某个字符串的相当大的表,然后删除不包含该字符串的行或将包含它的所有行复制到新的Word文档。只是一种隔离包含该字符串的行的方法。
谢谢!
答案 0 :(得分:1)
如果您已经知道如何将光标放在要迭代的列的顶部单元格中,那么这里是您要放置的代码,以便在单元格文本为空时删除整行。
请根据您的情况对代码进行必要的修改
Selection.MoveEnd 'This ensures that you select the content of the cell to read
If InStr(Selection.Text, Chr(7)) Then 'if you select the whole cell it will contain
'character 7 (TAB) so you will also select
'2 additional invisible characters as well
If Trim(Mid(Selection.Text, 1, Len(Selection.Text) - 2)) = "" Then
Selection.Rows.Delete
End If
Else
' you selected part of the text that does not contain invisible characters
If Trim(Mid(Selection.Text, 1, 1)) = "" Then
Selection.Rows.Delete
End If
End If
答案 1 :(得分:1)
从另一个论坛找到解决方案。以为我会在这里发帖,以防它帮助其他人:
With ThisDocument.Tables(1)
For r = .Rows.Count To 1 Step -1
fnd = False
For Each c In .Rows(r).Cells
If InStr(c.Range.Text, "x") > 0 Then fnd = True
Next
If Not fnd Then .Rows(r).Delete
Next
End With
其中“x”是要搜索的文本。
我还需要一个宏来搜索某个文本字符串并删除该行,这可以通过从上面的脚本中删除“not”来完成。尽管如此,脚本确实需要一段时间才能运行(在大约250行的表格上),所以起初我认为Word已经锁定,以防运行此脚本的人注意到类似的行为并且担心。此外,我正在搜索全文大写的文本字符串,除非搜索字符串(“x”)也在大写字母中,否则脚本无法识别它。
此外,我发现这个宏不起作用,除非它被复制到需要运行的word文档中。将ThisDocument更改为ActiveDocument允许它仅在Normal模板中工作。
无论如何,希望能帮助别人!