vba - 宏在应用于分段符时会导致 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
当我只选择一个句子并运行它时效果很好,但是如果我不小心在句子末尾突出显示了一个段落中断,宏开始慢慢突出显示文档中的所有内容,从我选择的开头移动到开头整个文档,这总是会使程序崩溃。
谁能指出我的解决方案的方向?
解决方案
VBA 分配的默认值是短整数,从 -32,768 到 32,767。我认为,如果在您的选择中发现很多空白,则计数器不会超出该值,因此该方法会无限期地挂起。
试试 UInteger 或 Ulong:
Dim ULong As iCount
iCount = 1
或者您可以尝试在计数器达到警告用户的某个点时处理异常。
希望有帮助
推荐阅读
- http - 是否跨浏览器选项卡共享 http 标头?
- java - 未定义 admob 插页式广告侦听器
- javascript - Visual Studio Code 调试器在第一次调用后消失
- sql-server - VB.Net 登录表单使用带有重定向到不同表单的角色的 SQL Server
- git - git-status 不反映修改后的文件
- c++ - 在 G++ 中访问相等比较运算符时出现歧义错误
- ffmpeg - 如何在没有完整解码的情况下从 h264 中提取运动矢量
- javascript - 无法以模态形式对数据库进行保存更改编辑
- c++ - CMake 在构建时找不到 z3++.h
- c - 函数返回和赋值之间的语义差异