当任何控件元素中的数据发生变化时,有没有办法在VBA中运行函数?我已经尝试过Form_AfterUpdate和Form_DataChange,但他们似乎没有做任何事情
答案 0 :(得分:2)
您无需对控件的更新/更改事件进行编码,请查看Key Preview
您可以使用KeyPreview属性指定表单级别 在控制键盘之前调用键盘事件过程 事件程序。读/写布尔。
小心使用。
例如,使用KeyPreview:
Private Sub Form_KeyPress(KeyAscii As Integer)
MsgBox "You pressed a key"
End Sub
答案 1 :(得分:0)
第1步:创建一个功能
Function DoStuff()
Call RunMySub
End Function
步骤2:创建宏(命名为RunMyCode)
RunCode
Function Name DoStuff()
步骤3:修改Form_Load()子
Private Sub Form_Load()
Dim cControl As Control
On Error Resume Next
For Each cControl In Me.Controls
if cControl.ControlType = 109 'this is for text boxes
'Depending on what your code does you can use all or some of these:
cControl.OnExit = "RunMyCode"
cControl.OnEnter = "RunMyCode"
cControl.OnLostFocus = "RunMyCode"
cControl.OnGotFocus = "RunMyCode"
If cControl.OnClick = "" Then cControl.OnClick = "RunMyCode"
end if
Next cControl
On Error GoTo 0
您可以使用控件中的任何属性,我发现“OnExit / OnEnter”和“OnLostFocus / OnGotFocus”对是最有效的。我也喜欢'OnClick',但是我使用if语句来覆盖操作(对于按钮和东西)。您可以将十几种其他方法分配给控制操作 - 我相信您将能够找到符合您目标的一个/多个。
注意 - 我使用on error enclosure,因为我将这些代码包装在多个不同类型的控件周围,而不是所有控件都包含所有方法。