Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 在文本框中输入后,如何使AfterUpdate事件运行?_Excel_Vba_Textbox - Fatal编程技术网

Excel 在文本框中输入后,如何使AfterUpdate事件运行?

Excel 在文本框中输入后,如何使AfterUpdate事件运行?,excel,vba,textbox,Excel,Vba,Textbox,我有一个带有多个文本框的Excel VBA用户表单。 用户将在文本框中输入权重。然后,他们可以在表单上执行其他操作,或者单击应用、更新、上一个事件、下一个事件或取消 输入权重后,必须对其进行验证,如果正确,则表单标记为mbFormChanged=True。此验证发生在文本框的AfterUpdate事件中 我的问题是,如果用户键入一个值,然后立即单击“应用”、“更新”、“上一个事件”或“下一个事件”,则该字段不会被验证,就好像它从未被更改过一样 即输入重量:200[更新] 但是,如果用户在键入重量

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

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

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

即输入重量:200[更新]

但是,如果用户在键入重量后切换到另一个字段,则会验证该字段,并将表单标记为已更改

即输入重量:200[标签][更新]

如何确保在单击命令按钮后立即运行AfterUpdate


我不能将验证放在OK/Apply的位置,因为当用户输入一个新的权重并且它有效时,它会立即更新表单上可见的许多其他字段和列表(实时更新)。

我假设这是一个Excel用户表单,在这种情况下,我不认为有内置的
更新后事件。Excel表单不绑定任何内容(与Access不同),因此表单更新时没有任何内容。您需要在更新后创建自己的
事件。

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

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

上面的代码类似于forcestextbox1\u AfterUpdate()事件。

是,Excel。所有文本框都有一个内置的AfterUpdate事件。我的名为txtNewWeight_AfterUpdate(),我在其中放置了验证脚本。我只是不知道当用户在输入新值后立即按下命令按钮时如何启动。当您离开文本框时,您的后更新将启动。当用户点击按钮时,更新已经来了又走了。你能不能在点击按钮时调用验证代码,因为这是你想要的?谢谢,但我需要立即进行验证,因为除了验证之外,在点击最终的确定/应用之前,可能会立即更新其他相关字段。(更新了我的问题以说明这一点。)@ShariW如果用户单击“确定”而验证失败,则不应继续更新。你可以在文本框失去焦点时验证它(正常的AfterUpdate事件),也可以在你点击提交按钮时验证表单。让我们想想你在这里说的话
我不能将验证放在OK/Apply点上,因为当用户输入新权重时,它是有效的[do stuff]
你说这里就是做这件事的地方:
而且它是有效的
即通过验证。单击->验证->如果有效,则更新您的物品;如果无效,则调出无效内容,并且不进行更新。添加一个Change\u事件,该事件将在用户输入重量后提示用户(使用MsgBox)。如果他按ok,则使用SetFocus属性将焦点传递给其他控件。谢谢。这适用于某些应用程序和输入类型,但不适用于我的。它检查每个字符输入后是否完成。如果我必须输入75.3,这个问题会出现四次。一次也太多了。我需要它来检测光标何时离开该框(?)