基本上,我想使用一个函数或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个私有子事件?
答案 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编写代码,但这是高级主题。