【问题标题】:UserForm in Outlook not responding (can't close, button click event doesn't fire)Outlook 中的用户窗体没有响应(无法关闭,按钮单击事件不会触发)
【发布时间】:2010-10-27 12:45:48
【问题描述】:

我在 Outlook VBA 宏中创建了一个简单的用户窗体 - 我可以使用以下代码使窗体可见:

VBA.UserForms.Add (PasswordForm.Name) PasswordForm.Show(模态)

...UserForm_Initialize() 事件确实会触发。但是单击表单上的“提交”按钮没有任何作用 - SubmitButton_Click() 事件(通过双击设计器中的按钮自动创建)永远不会触发。此外,用户窗体在窗口的右上角有一个通常的小红色 X,但单击它不会执行任何操作(窗体不会关闭或退出)。

知道我可能做错了什么吗?我对 VBA 很陌生。

【问题讨论】:

  • 您是否尝试过在“UserForm_Initialize()”中设置断点并单步执行调试器中的代码?顺便说一句,您可以删除“VBA.UserForms.Add”,它是完全多余的。
  • 是的,这就是我确认 UserForm_Initialize() 事件确实触发的方式。问题是 SubmitButton_Click() - 那里的断点永远不会被命中。
  • 感谢有关 VBA.UserForms.Add 的提示

标签: vba outlook userform


【解决方案1】:

有时 VBA 中的控件会与其事件分离。这可能是因为您重命名了控件,或者因为您不小心重命名了事件过程(尽管由于其他原因很少会发生)。此外,如果您忘记在运行表单之前“编译”,您可能会在导致问题的表单上遇到错误。

仔细检查的最简单方法是在设计视图中打开表单,选择有问题的按钮并按 F7。如果创建了新过程,请复制粘贴您的代码,然后将旧代码复制/粘贴到其中,然后删除旧代码。

完成后,转到“调试”菜单并单击“编译”。如果检测到任何错误,请更正它们并再次单击“编译”。重复,直到它无怨无悔地编译。然后再次尝试运行您的表单。

【讨论】:

  • @Oorang:谢谢,我现在删除了按钮,从头开始重新创建它,以及完全按照您所说的事件处理程序代码,并编译。同样的问题 - 当您按下按钮时没有任何反应(没有反应,没有击中断点,即使关闭表单也不起作用)。还有其他想法吗?
【解决方案2】:

好的,解决了:我改了:

PasswordForm.Show (Modal)

PasswordForm.Show

它现在可以工作了,尽管我必须稍微改变它的工作方式以适应表单不再是模态的事实(我想无论如何这是更好的解决方案,模态可能会让用户,只是我现在必须检查他们是否提交了表单等)。

感谢大家的建议。

【讨论】:

  • 我知道这个问题已经过时了,但我想我还是要补充一点,Show Method 需要两个可能的常量:vbModal 或 vbModeless。没有“模态”这样的关键字。很惊讶没有人提到这一点。
【解决方案3】:

在 Office 03/07 中,如果要确保它显示模式,请将表单的 .ShowModal 行为设置为“True”。我在节目活动期间尝试将表单设为模态时遇到了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-19
    • 2015-09-11
    • 2016-04-25
    • 2012-09-12
    • 2019-06-22
    • 2016-11-19
    • 1970-01-01
    • 2020-02-20
    相关资源
    最近更新 更多