VBA代码停止正常工作
几天前,我制作了一个小型VBA程序,使用快速访问工具栏上指定的按钮和指定的键盘快捷键,该程序运行良好。然而,今天早些时候,它的行为开始异常。当我在调试模式下运行它时,所有行都按预期执行,但当我通过指定的按钮或键盘快捷键运行它时,代码似乎被无限地卡住了。我真的不知道出了什么问题 下面是我的VBA代码:VBA代码停止正常工作,vba,ms-word,Vba,Ms Word,几天前,我制作了一个小型VBA程序,使用快速访问工具栏上指定的按钮和指定的键盘快捷键,该程序运行良好。然而,今天早些时候,它的行为开始异常。当我在调试模式下运行它时,所有行都按预期执行,但当我通过指定的按钮或键盘快捷键运行它时,代码似乎被无限地卡住了。我真的不知道出了什么问题 下面是我的VBA代码: Sub GetLengthOfSelection() Dim Rng As Range Set Rng = Selection.Range On Error Resume Next LenF
Sub GetLengthOfSelection()
Dim Rng As Range
Set Rng = Selection.Range
On Error Resume Next
LenFinder:
If Len(Rng) >= 43 Then
GoTo Trimmer
Else
Set Rng = Selection.Range
MsgBox Rng, vbInformation
Rng.Copy
q = Rng.Words.Count
Set Rng = Rng.Words(q)
Rng.MoveStart Unit:=wdWord, Count:=1
Rng.MoveEndUntil CSET:=Chr(13), Count:=wdForward
If Len(Rng) >= 43 Then
GoTo Trimmer
End If
MsgBox Rng, vbInformation, "Text after new range definition"
Rng.Copy
Exit Sub
End If
Trimmer:
Rng.MoveEnd wdWord, -1
Rng.Select
Set Rng = Selection.Range
GoTo LenFinder
End Sub
下一步,删除错误恢复,看看是否报告了错误。另外,删除GoTo+label命令,这是一种非常糟糕的做法。使用分支、循环和子例程正确构造程序。正是因为这些愚蠢的goto命令(不是你,命令本身是愚蠢的),你看不见,但这实际上是一个无止境的循环。它永远不会结束,只是一直回到代码的开头,一次又一次地重做所有事情。只要合理地组织你的程序。阅读一些理论或与程序员或其他人交谈。:)Vacip,我很重视你的建议,但唯一让我感兴趣的是,在过去的几天里,我把这个小代码运行了一百次,没有任何问题。一旦代码在Word文档中的选定文本上遇到换行符,程序就可以通过“退出子例程”退出子例程/过程。请您在您的机器上运行此代码,并告诉我您是否也面临此问题。我记得今天早些时候我收到了一个数字ID要求,并怀疑在我尝试使用SELFCERT.exe文件时出现了问题。如果您选择的内容很长,或者选择的内容对MoveEnd没有反应,则您的代码将出现问题。可能你以前从未遇到过这种情况。