我有一个带有多个文本框的Excel VBA用户表单 用户将在文本框中输入权重。然后他们可以在表单上执行其他操作,或单击“应用”,“更新”,“上一个事件”,“下一个事件”或“取消”。
输入重量后,必须对其进行验证,如果确定,则表单标记为mbFormChanged=True
。此验证发生在文本框的AfterUpdate事件中。
我的问题是,如果用户键入一个值并立即单击“应用”,“更新”,“上一个事件”或“下一个事件”,则不会验证该字段,就好像它从未更改过一样。
即输入重量:200 [更新]
但是,如果用户在输入权重后选中其他字段,则会对其进行验证并将表单标记为已更改。
即。输入重量:200 [Tab] [更新]
如何在以后立即点击命令按钮时确保运行AfterUpdate?
我无法在OK / Apply点进行验证,因为当用户输入新权重并且有效时,它会立即更新表单上可见的许多其他字段和列表(实时更新)
答案 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()事件一样。