在Access VBA中,我知道您可以使用字符串Me("string")
来引用对象。我想使用字符串在函数中引用全局变量,从而允许我将函数用于不同的状态。
e.g。我有invoiceBtn
和infoBtn
按钮,我想调用相同的函数但使用不同的变量。全局变量infoBool
和invoiceBool
Private Sub infoBtn_Click()
functionName("info")
End Sub
Private Sub invoiceBtn_Click()
functionName("invoice")
End Sub
在函数中:
public infoBool As Boolean
public invoiceBool As Boolean
public Function functionName(typeString As String)
Me(typeString & "Bool") = false
Me(typeString & "Btn").visible = false
End Function
第一个Me()没有编译,第二个Me()没有,是否有办法使用字符串获取对变量的引用?
编辑:我希望现在已经足够清楚了。这只是示例代码,不在我的程序中使用。
答案 0 :(得分:1)
在某些情况下,您可以尝试使用Eval
函数来评估函数,但它不适用于变量。
您可以使用集合来存储对象的值或引用,因此在这种情况下,您的代码将类似于
Public col As Collection
Public Function functionName(typeString As String)
'for scalar data types element should be replaced, cannot change value
col.Remove typeString & "Bool"
col.Add False, typeString & "Bool"
'object references can be used directly
col(typeString & "Btn").Visible = False
End Function
在使用之前,您应该添加所有需要的值或对象引用
Set col = New Collection
col.Add True, "infoBool"
col.Add Me.InfoBtn, Me.InfoBtn.Name