如何结束MS Word宏中的Do循环

时间:2016-06-09 00:16:05

标签: ms-word word-vba

我已经制作了一个宏来更改文档的标题颜色,但是当它到达文档的末尾时 - 或者如果没有剩余的标题 - 我收到错误。

我想要的是在文档末尾的最后一个标题之后退出我的Do Loop。

这是我的代码:

function insertJobDesc (r) {
        rowid=r;
        var qty = document.getElementById('Qty' + r).value;
        var desc = document.getElementById('Desc' + r).value;
        desc = desc.replace(/&/g, "&amp;").replace(/>/g, "&gt;").replace(/</g, "&lt;").replace(/"/g, '"&quot;"').replace(/'/g, '"&#039;"');

        sendAsync("editDatabase.php?sql=UPDATE+jobdesc+SET+qty="+qty+",+description='"+desc+"',+rowID="+rowid+"+WHERE+id="+rowid+"+AND+jobID="+jobID);
    }

1 个答案:

答案 0 :(得分:0)

最佳地解决页眉/页脚与录制的宏无法很好地协作,因此我将向您展示与您提供的方法略有不同的方法。下面的代码直接使用底层的对象,并将格式应用于Range而不是选择。这样更快,屏幕也不会“闪烁”。

当使用一组内容(例如Headers)时,通常使用For-Each循环来循环遍历该组。在这种情况下,标题特定于章节,因此您循环章节。这些方面的东西:

Dim doc as Word.Document
Dim sec as Word.Section

Set doc = ActiveDocument
For Each sec in doc.Sections
  sec.Headers(wdHeaderFooterPrimary).Range.Paragraphs(1).Range.Font.Color = 8527984
  sec.Headers(wdHeaderFooterFirstPage).Range.Paragraphs(1).Range.Font.Color = 8527984
Next

此外,如果您查看Do循环的帮助主题,您会发现他们需要 test 来结束循环:Do WhileDo Until或{ {1}}或Loop While符合某个标准。我很确定您向我们展示的代码必须给您一个错误 - 在提问时您应该始终包含所有相关信息,包括任何错误消息......