【发布时间】:2019-05-08 21:08:28
【问题描述】:
我正在尝试让一个潜艇运行一系列其他潜艇,但运气不佳。 Sub 看起来像这样:
Private Sub OKCommand_Click()
new_tab
metric_transfer
End Sub
当我注释掉第一个 sub 时,第二个 sub 运行。我在第二个 sub 的上方和下方放置了 Debug.Print cmets 并观察它在 sub 上运行而没有调用它。我尝试将Call 和Application.Run 放在前面,但前者什么也没做,而后者是错误的方法。我的示例遵循this,但尚不清楚在这种情况下问题是否得到解决。我没有尝试this 延迟技术,因为它似乎也不适合他们。任何帮助将不胜感激。
【问题讨论】:
-
Put a breakpoint 在
metric_transfer行。当它被击中时,按住 F8。 -
Call没用。将Option Explicit放在模块顶部。如果代码不再编译,则说明某处存在拼写错误。手续在哪里?你能edit你的帖子包括他们吗? -
对于你如何描述它,似乎过程
new_tab中的代码做了一些使子metric_transfer应该做的事情无效。您可能应该逐步调试new_tab中的代码,看看会发生什么导致您的代码崩溃/退出。此外,通过子new_tab的名称,有些东西告诉我你正在向工作簿添加一个新工作表......当焦点在这个新工作表上时,metric_transfer的代码是否可能不起作用?请分享new_tab中的代码,为我们提供更多线索。 -
发布 new_tab 和 metric_transfer 的代码
-
“显然,
Unload Me在new_tab中导致它跳过子”。嗯,当然!如果您阅读文档,您会看到当一个对象被卸载时,它会从内存中删除,并且与该对象关联的所有内存都会被回收。你的宏OKCommand_Click是用户表单的一部分,所以如果你Unload用户表单,内存就会被释放,OKCommand_Click的执行就会停止(这就是你从不执行第二个的原因)。
标签: excel vba subroutine