首页 > 解决方案 > 宏在应用于分段符时会导致 Word 崩溃

问题描述

我编写了一个宏,用于在 Microsoft Word 中的句子周围添加括号:

Sub AddParentheses()
 Dim iCount As Integer
 iCount = 1
 While Right(Selection.Text, 1) = " " Or _
 Right(Selection.Text, 1) = Chr(13)
 Selection.MoveLeft Unit:=wdCharacter, Count:=1, _
  Extend:=wdExtend
 iCount = iCount + 1
 Wend

 Selection.InsertAfter ")"
 Selection.InsertBefore "("
 Selection.MoveRight Unit:=wdCharacter, Count:=iCount
End Sub

当我只选择一个句子并运行它时效果很好,但是如果我不小心在句子末尾突出显示了一个段落中断,宏开始慢慢突出显示文档中的所有内容,从我选择的开头移动到开头整个文档,这总是会使程序崩溃。

谁能指出我的解决方案的方向?

标签: vbams-word

解决方案


VBA 分配的默认值是短整数,从 -32,768 到 32,767。我认为,如果在您的选择中发现很多空白,则计数器不会超出该值,因此该方法会无限期地挂起。

试试 UInteger 或 Ulong:

Dim ULong As iCount
iCount = 1

或者您可以尝试在计数器达到警告用户的某个点时处理异常。

希望有帮助


推荐阅读