4

我有一个宏,我用它来突出显示待办事项列表的行,以查看我在哪一步。这很简单。它取消突出显示当前行并突出显示下一行。

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 语句(减去 sub 语句)来做到这一点,该语句首先检查它是否是最后一行。但是,我不知道如何检查一行是否是最后一行。我用谷歌搜索并没有找到任何东西。

同样,我有一个“Highlight_Next_Row_Up”,我想知道当我到达顶线时如何做同样的事情。

谢谢你的帮助

4

2 回答 2

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到文本最后一行下方的某个位置。

于 2013-05-14T21:37:28.760 回答
0

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

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

你写:

c = Selection.MoveDown(wdLine,1) ,

那么变量 c 将假定一个值等于选择实际移动的单位数。因此,只要选择在文本正文中,它就会向下移动一行并且 c = 1。而在文本末尾,选择不能向下移动另一行,因此 c = 0。设置更简单的控制条件的方式:

如果 c = 0 那么...

直到 c = 0...

ETC

于 2014-10-26T05:16:38.330 回答