应用于段落分隔符时,Macro使Word崩溃

问题描述 投票:0回答:1

我编写了一个宏,用于在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

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

任何人都可以指出我的解决方法吗?

word-vba
1个回答
0
投票

VBA分配的默认值是短整数,范围是-32,768到32,767。我认为,如果在选择中发现很多空格,则计数器不会超出该值,因此该方法将在无限时间内保持挂起状态。

试用UInteger Ulong:

Dim ULong As iCount
iCount = 1

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

希望有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.