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

几天前,我制作了一个小型VBA程序,使用快速访问工具栏上指定的按钮和指定的键盘快捷键,该程序运行良好。然而,今天早些时候,它的行为开始异常。当我在调试模式下运行它时,所有行都按预期执行,但当我通过指定的按钮或键盘快捷键运行它时,代码似乎被无限地卡住了。我真的不知道出了什么问题

下面是我的VBA代码:

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没有反应,则您的代码将出现问题。可能你以前从未遇到过这种情况。