我有一个宏用于突出显示待办事项的行,以查看我在哪一步。这很简单。它不会突出显示当前行,并突出显示下一行。
Sub Highlight_Next_Row_Down()
Selection.EndKey Unit:=wdLine
Selection.HomeKey Unit:=wdLine, Extend:=wdExtend
Selection.Range.HighlightColorIndex = wdNoHighlight
Selection.MoveDown Unit:=wdLine, Count:=1
Selection.EndKey Unit:=wdLine
Selection.HomeKey Unit:=wdLine, Extend:=wdExtend
Selection.Range.HighlightColorIndex = wdYellow
End Sub
现在,当我在文档的最后一行时,我希望它只是取消当前行的高亮,因为那样我就完成了。我会通过在整个事物(减去子语句)周围插入if语句来做到这一点,首先检查它是否是最后一行。但是,我不知道如何检查一条线是否是最后一条线。我用Google搜索,但没有找到任何东西。
同样,我有一个" Highlight_Next_Row_Up"当我到达顶线时,我想知道如何做同样的事情。
感谢您的帮助
答案 0 :(得分:3)
我不确定这是否是您需要的确切逻辑,但此代码提供了一种可能的方法来检查您是否在最后一行文档中。
Sub Highlight_Next_Row_Down()
Selection.EndKey Unit:=wdLine
Selection.HomeKey Unit:=wdLine, Extend:=wdExtend
'here check if this is the end
If Selection.End = ActiveDocument.Bookmarks("\EndOfDoc").Range.End Then
'just unhighlight
Selection.Range.HighlightColorIndex = wdNoHighlight
Else
'your code here
Selection.Range.HighlightColorIndex = wdNoHighlight
Selection.MoveDown Unit:=wdLine, Count:=1
Selection.EndKey Unit:=wdLine
Selection.HomeKey Unit:=wdLine, Extend:=wdExtend
Selection.Range.HighlightColorIndex = wdYellow
End If
End Sub
请注意,任何额外的空段落都会在您文本的最后一行下方某处移动end of document
。
答案 1 :(得分:0)
可以采取的另一种方法是利用MoveDown方法返回变量的能力。如果,而不是:
Selection.MoveDown Unit:= wdLine,Count:= 1,
你写道:c = Selection.MoveDown(wdLine,1),
然后变量c将假设一个值等于选择实际移动的多个单位。因此,只要选择位于文本正文中,它就会向下移动一行而c = 1.然而,在文本末尾,选择不能向下移动另一行,因此c = 0这样你就可以设置一个更简单的控制条件:
如果c = 0那么......
直到c = 0 ......
等