在文本框中输入后如何导致AfterUpdate事件运行?

时间:2014-07-03 04:20:33

标签: excel vba textbox

我有一个带有多个文本框的Excel VBA用户表单 用户将在文本框中输入权重。然后他们可以在表单上执行其他操作,或单击“应用”,“更新”,“上一个事件”,“下一个事件”或“取消”。

输入重量后,必须对其进行验证,如果确定,则表单标记为mbFormChanged=True。此验证发生在文本框的AfterUpdate事件中。

我的问题是,如果用户键入一个值并立即单击“应用”,“更新”,“上一个事件”或“下一个事件”,则不会验证该字段,就好像它从未更改过一样。

即输入重量:200 [更新]

但是,如果用户在输入权重后选中其他字段,则会对其进行验证并将表单标记为已更改。

即。输入重量:200 [Tab] [更新]

如何在以后立即点击命令按钮时确保运行AfterUpdate?

我无法在OK / Apply点进行验证,因为当用户输入新权重并且有效时,它会立即更新表单上可见的许多其他字段和列表(实时更新)

2 个答案:

答案 0 :(得分:0)

我认为这是一个Excel用户表单,在这种情况下我认为没有内置的AfterUpdate事件。 Excel表单不受任何约束(与Access不同),因此表单没有更新。您需要制作自己的AfterUpdate活动。

答案 1 :(得分:-1)

如评论所述,您可以尝试:

Private Sub TextBox1_Change()
    If (MsgBox("Done?", vbYesNo)) = vbYes Then Me.TextBox2.SetFocus 'Or any other ctrl
End Sub

上面的代码就像强制 TextBox1_AfterUpdate()事件一样。