子调用第一个子但不调用第二个子

Posted

技术标签:

【中文标题】子调用第一个子但不调用第二个子【英文标题】:Sub calls First Sub but does not call second sub 【发布时间】:2019-05-08 21:08:28 【问题描述】:

我正在尝试让一个潜艇运行一系列其他潜艇,但运气不佳。 Sub 看起来像这样:

Private Sub OKCommand_Click()

new_tab
metric_transfer

End Sub

当我注释掉第一个 sub 时,第二个 sub 运行。我在第二个 sub 的上方和下方放置了 Debug.Print cmets 并观察它在 sub 上运行而没有调用它。我尝试将CallApplication.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 Menew_tab 中导致它跳过子”。嗯,当然!如果您阅读文档,您会看到当一个对象被卸载时,它会从内存中删除,并且与该对象关联的所有内存都会被回收。你的宏 OKCommand_Click 是用户表单的一部分,所以如果你 Unload 用户表单,内存就会被释放,OKCommand_Click 的执行就会停止(这就是你从不执行第二个的原因)。 【参考方案1】:

非常感谢@Matteo 为我指明了正确的方向。我遇到的问题是Unload Me 子中的Unload Me 行的结果。所有这些程序都在用户表单上。当Unload Me 执行时,它会按照here 的描述从内存中擦除用户表单。使用form1.Hide 隐藏表单似乎是更好的选择。不仅因为这里引起的问题,还因为我以后需要此表格中的信息。

【讨论】:

以上是关于子调用第一个子但不调用第二个子的主要内容,如果未能解决你的问题,请参考以下文章

jquery怎么删除第一个子元素

jquery怎么删除第一个子元素

参考模态中的第二个子视图

jquery如何获取第一个或最后一个子元素?

jquery怎么找到元素下面的第一个子元素

jquery如何获取第一个子元素