【发布时间】:2014-07-03 04:20:33
【问题描述】:
我有一个带有多个文本框的 Excel VBA 用户表单。
用户将在文本框中输入权重。然后他们可以在表单上执行其他操作或单击应用、更新、上一个事件、下一个事件或取消。
权重输入后,必须进行验证,如果OK,则表格标记为mbFormChanged=True。此验证发生在文本框的 AfterUpdate 事件中。
我的问题是,如果用户输入一个值并立即单击“应用”、“更新”、“上一个事件”或“下一个事件”,则该字段不会被验证,就好像它从未更改过一样。
即输入体重:200[更新]
但是,如果用户在输入权重后切换到另一个字段,那么它会被验证并且表单被标记为已更改。
即输入重量:200[Tab][更新]
如何确保 AfterUpdate 在之后立即单击命令按钮时运行?
我不能在 OK/Apply 处进行验证,因为当用户输入新权重并且它有效时,它会立即更新表单上可见的许多其他字段和列表(实时更新)。
【问题讨论】:
-
添加一个 Change_Event,如果用户完成输入重量,它将提示用户(使用 MsgBox)。如果他按下 ok,则使用 SetFocus 属性将焦点传递给其他控件。