在 VBA 用户窗体中,退出已提交的表单时会触发哪个事件

In a VBA Userform, which event is triggered when exiting a filed

我在 Windows 10(64 位)平台上使用 Microsoft Office Professional Plus(64 位)。当我对名为 MyDate 的用户窗体字段进行更改时,我有一个子程序被处理。它被称为Private Sub MyDate_AfterUpdate()。它是表单上的第二个字段。只要编辑 MyDate 字段的内容,它就可以正常工作。但是,如果用户不需要更新 MyDate 字段的内容,因为他们接受该字段的默认值并且只需按 Tab 键越过第二个字段,我仍然希望执行子例程.当我只是在字段中按 Tab 键而不一定要编辑内容时,我可以使用什么事件来激活代码?感谢您查看此内容。

如果您查看代码窗格的顶部,您会注意到两个下拉菜单。左侧包含您可以在 class 中实现的所有接口和事件提供程序(UserForm 是 class)。

Select 您的 MyDate 控件来自该下拉列表;右侧的下拉菜单现在列出了您可以为此 MyDate 控件处理的每个事件:

在这种特殊情况下,Exit 事件似乎是一个不错的候选者:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    'make Cancel.Value = True to prevent exiting the control.
    '...ideally... make that conditional...
End Sub

通过始终如一地使用这些下拉菜单让 VBE 为您生成事件处理程序(而不是从内存中输入它们),您可以避免弄错......并且错误地获取事件处理程序签名可以从字面上做任何事情什么都没有,如果你幸运的话编译错误,或者如果你不太幸运的话奇怪且难以诊断的行为。