【发布时间】:2014-05-24 23:04:35
【问题描述】:
我创建了这段代码来搜索我的 word 文档并找到单词 APPENDIX3,如果找到,删除它和它之前的空格(在这种情况下是分节符)。然后它将数字 3 减去 1 并返回到 for 循环的顶部并搜索 APPENDIX2 并删除我想要的东西。它循环了 3 次,在 APPENDIX1 结束。唯一的问题是它只删除了 APPENDIX3 的东西。如果我重新运行宏,它将删除 APPENDIX2 并且只删除 APPENDIX2。以此类推。它正在增加,但选择似乎没有被清除。关于如何修改我的代码以每次循环并选择不同的文本有什么建议吗?
Sub RemoveAppendices()
Dim i As Integer
Application.ScreenUpdating = False
Selection.HomeKey Unit:=wdStory
'Cntr = 3
'For i = 1 To 3
For i=3 to 1 step -1
With Selection.Find
.ClearFormatting
.Text = "APPENDIX" & Cntr
If Selection.Find.Execute Then
Selection.Select
Selection.Delete
With Selection
.EndKey Unit:=wdStory
.TypeBackspace
.Delete
End With
End If
End With
'Cntr = Cntr - 1
Next i
End Sub
【问题讨论】:
-
删除集合的任何部分时,您应该从最后一项运行循环到第一项。因此尝试类似
For i=3 to 1 step -1。此外,您可以使用i,而不是Cntr = Cntr -1。 -
我修改了上面的代码以反映您的更改,它确实更有效(非常感谢),但是清除找到的初始文本并找到下一个文本值并通过 If 运行此选择的问题声明仍未解决。