【问题标题】:VBA Procedure too large, only the first procedure worksVBA 程序太大,只有第一个程序有效
【发布时间】:2016-08-03 21:03:24
【问题描述】:

好吧,在写了一大段代码并运行它之后,我得到了消息

程序太大。

经过一些研究,我发现我可以这样编写代码:

Sub mycode()
Call proc1
Call proc2
Call proc3
End sub

Sub proc1()
'the code
End sub

Sub proc2()
'the code
End sub

Sub proc3()
'the code
End sub

这正是我所做的,但不幸的是只有 PROC1 代码正在执行。

如何运行整个代码:PROC1 然后 PROC2 然后 PROC3 ????

【问题讨论】:

  • 如果您从 mycode 调用 proc 1/2/3,它将运行。你确定你的代码没有其他问题吗?
  • 你有很多像 `ActiveWindow.ScrollRow = 9838` 这样的行吗?我建议查看此线程上已接受的答案:stackoverflow.com/questions/11450232/…

标签: vba excel


【解决方案1】:

您必须在 proc1 中的某处有 End 关键字:

'// some code here
'// some more code
End

将其替换为:

'// some code here
'// some more code
Exit Sub

这会将控制权返回给调用过程。


End 词本身将停止执行,而不会将控制权返回给调用过程,除非有充分的理由,否则不应真正使用。

附带说明,在 VBA 中无需使用 Call 关键字,它只是用于遗留用途。

【讨论】:

  • 嘿 Macro Man,感谢您的快速回答,当我将 END 替换为 Exit Sub 时,我收到一个消息框“出现错误”
  • @MacroMan 他的问题显示他使用End Sub,看起来他只是用Exit Sub 替换End Sub...因此Sub 永远不会关闭。
  • @DragonSamu 这就是我要求错误消息的原因。如果是编译错误,那么 OP 误解了我的回答。
  • @IkrameBahhar 不要用Exit Sub 替换End Sub - 我的意思是在你的代码中的某处之前 End Sub 上面必须有End 这个词拥有某处。 那个是需要更换的
  • @MacroMan 我在 proc1 中没有任何 End 这就是为什么我为此苦苦挣扎的原因:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-20
  • 2019-01-26
  • 1970-01-01
  • 2012-12-28
相关资源
最近更新 更多