是否可以在VBA访问中将私有子集合并到功能中?

时间:2018-10-10 17:34:51

标签: vba access-vba

基本上,我想使用一个函数或sub来“粘贴”代码,这样我就不必一遍又一遍地粘贴相同的东西。我对VBA有点陌生,所以我不确定是否有更简单的方法来处理此问题。我有很多行组合框,它们将由它们前面的相应文本框确定。我只想放置一个带有数字的函数/子例程来指定组合框。

Function cboAfterUpdate (x as Variant)
    Private Sub cboOperation &x& _AfterUpdate()
     'some other function that uses x'
    End Sub
 End Funcion

我希望这样会结束...

 cboAfterUpdate(5)

会显示..

 Private Sub cboOperation5_AfterUpdate()
   'some other function that uses 5'
 End Sub

换句话说,我想这样做

Private Sub cboOperation1_AfterUpdate()
Call SqlDes(1)
End Sub
Private Sub cboOperation2_AfterUpdate()
Call SqlDes(2)
End Sub
Private Sub cboOperation3_AfterUpdate()
Call SqlDes(3)
End Sub
因为我有cboOperation(1-20)组合框,所以最多

20次。如何在一个功能中做到这一点而不必复制/粘贴/键入20个私有子事件?

1 个答案:

答案 0 :(得分:0)

我可能会在组合框后缀一个数字,并使用其Caller属性通过其字符串名称提供所需的参数。例如。创建3个组合框,并将其命名为cbo_1,cbo_2和cbo_3。然后为它们分配一个子:

Sub CboHasChanged()

Dim cboNumber As Integer

Msgbox Application.Caller & " is about to call the sub SqlDes!", vbinformation
cboNumber = CInt(Right(Application.Caller, 1))
SqlDes cboNumber

End Sub

您当然可以使字符串的处理更加复杂,以解决两位数的数字等问题,但是我希望您能理解-使用组合框的名称来提供所需的值。

顺便说一句,您不需要像这样调用您的子程序,只需像在示例中所做的那样,先将子名称然后输入任何不带方括号的参数即可。

如果您确实想使用代码it is possible in VBA编写代码,但这是高级主题。