2013-05-14 73 views
4

我有一个宏,我用它来突出显示要做列表的行,以查看我所处的步骤。这很简单。它不突出显示当前行,并突出显示下一行。以某种方式指示Word VBA中的最后一行

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语句来执行此操作,首先检查它是否是最后一行。但是,我不知道如何检查一条线是否是最后一条线。我搜索了一下,但没有发现任何东西。

同样,我有一个“Highlight_Next_Row_Up”,我想知道如何做到这一点,当我到达顶线。

感谢所有帮助

回答

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某处您文本的最后一行的下方。

+0

对不起,这么长时间来看着这个。这似乎正是我想要的。我感谢您的帮助。而且,我很容易就能对Highlight_Next_Row_Up进行必要的更改。 – Graphth

0

可以采取的另一种方法是设置利用MoveDown方法返回变量的能力。如果,代替:

Selection.MoveDown单位:= wdLine,计数:= 1,

你写:

C = Selection.MoveDown(wdLine,1),

则变量c将假定一个值等于选择实际移动的许多单位。所以,只要选择在文本的主体中,它就沿着一条线向下移动,而c = 1。而在文本的末尾,选择不能沿着另一条线移动,因此c = 0。这样你设置了一个简单的控制条件:

如果C = 0,那么...

做,直到C = 0 ...