【问题标题】:Form Show method in event workbook_open in ThisWorkbook breaks on focusThisWorkbook 中的事件 workbook_open 中的表单显示方法打破焦点
【发布时间】:2011-10-13 17:53:15
【问题描述】:

当我尝试在私有子 workbook_open() 内的 ThisWorkbook 中使用 userform1.show 显示 userform1 时,它做了最奇怪的事情。 (我使用的是 Excel 2007)- 它进入中断模式并停止运行代码!!!

我打开启用宏的工作簿,用户窗体按计划显示,但是当我在用户窗体区域内移动鼠标时,它进入中断模式并突出显示行 UserForm1.Show 好像是问题所在。

此外,当我按下 F8 时,它会突出显示私有子 workbook_open(),另一次按下会再次突出显示 userform1.show,另一次按下会显示运行时错误“400”。:

应用程序定义或对象定义的错误。

我以前从来没有遇到过这种情况,我发现一个帖子说它没有答案here

有什么想法吗?

【问题讨论】:

    标签: excel vba runtime-error userform


    【解决方案1】:

    我也遇到过同样的情况。

    我所做的是将 Form 属性中的 ShowModal 属性更改为 False,然后中断就消失了。

    【讨论】:

    • 问题已经解决了,谢谢大家的回答,等问题回来我会试试你的回答。
    【解决方案2】:

    我遇到了同样的问题,上面的答案并没有解决它。重新启动PC暂时解决了它,但过了一会儿问题又回来了。经过几天令人沮丧的重启电脑后,我得出了以下结论:

    我认为导致问题的原因是当您在运行时使用 ctrl+break 停止代码。

    对我来说解决问题的方法是在代码未运行时按 ctrl+break,它会显示它处于中断模式,然后按 F5。它不会开始运行,但会再次退出中断模式。完成此操作后,问题应该得到解决,您可以照常运行代码。 我猜这个方法和重启你的电脑一样,但速度要快得多。

    【讨论】:

    • 我差点被这东西弄死了,你的解决方案奏效了!
    【解决方案3】:

    这是我在开发时已经遇到过的一些奇怪行为......一些可能会帮助你的提示:

    • 编译代码
    • 清除所有断点
    • 检查项目引用(缺少引用可能会导致问题)
    • 在“隐藏断点”之前添加一些不必要的语句(如if 1 = 2 then DoEvents),编译代码然后再次删除代码
    • 安装并运行VBA Code Cleaner

    不管怎样,对我来说,这个奇怪问题的原因是个谜。似乎某些断点即使在删除后仍保留在内存中......

    希望对你有帮助!

    【讨论】:

    • 去过那里,做到了.. 可能是因为我运行了一个循环,自动节省了一些时间,工作簿,每次使用不同的名称,导致用户表单再次加载并且再次重复?
    • 您可以查看 userForm 的处理方式。这个 userForm 只有一个实例并且它被正确关闭了吗?也许有几个用户窗体被实例化,它以某种方式破坏了 Excel 内存......
    【解决方案4】:

    首先要尝试重新编译您的 VBA 项目,然后保存包含宏的工作簿。如果编译引发错误,您可能会从编译器消息中获得更多信息,例如缺少引用。

    还要确保您清除了所有以前存在的断点。可能是您首先必须创建一个新断点 (F9),然后清除所有断点 (Ctrl+Shift+F9) 表示要启用的命令。

    【讨论】:

    • 对你的回答也一样。去过那里,做到了.. 可能是因为我运行了一个循环,自动节省了一些时间,工作簿,每次都以不同的名称,导致用户表单一次又一次地重复加载?
    猜你喜欢
    • 2020-11-17
    • 1970-01-01
    • 2018-04-20
    • 2016-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-14
    相关资源
    最近更新 更多