假设我有一个包含5行的用户表单。每行包含多个控件,例如:
<Text field> | <Text field> | <Combo box>
当在任一行中更改第一个控件/列(文本字段)的值时,我有一个我想调用的函数。如果没有制作五个单独的_Change
函数(每行一个),这是否可行?
答案 0 :(得分:0)
将Eventhandlers添加到多个控件中有一种相当快速但不合理的脏方法......
i)使用Change
定义要呼叫的功能。 Afaik它必须是普通模块中的Public Function
ii)使用RunCode
- 调用您的函数的事件创建一个Access-makro(而不是VBA)。
iii)将事件添加到您的控件中,无论是在您的设计视图中还是在
中Private Sub Form_Current()
Dim ctl
For Each ctl In Me.Controls
With ctl
If .ControlType = acTextBox Then
.OnChange = "Makro1"
End If
End With
Next ctl
End Sub
注意:强>
上面的代码将事件添加到所有文本框中(由于我是懒惰的)。交换If .ControlType = acTextBox Then
以检查您的喜好。你可以使用标签,智能标签,简单的名称约定,如tbx_c1r1
或控制数组,如果你喜欢
如果您的函数以某种方式包含Caller
,则会变得更加困难。一定要发布你的功能,也许我们可以找到一些方法。
希望这有帮助!如果有人想出一个更聪明的方法,我会很高兴的。