在Access VBA中,我知道您可以使用字符串引用对象:Me("string")
。我想使用字符串在函数中引用全局变量,从而允许我将函数用于不同的状态。
例如我有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(),是否有办法使用字符串获取对变量的引用?
编辑:我希望现在已经足够清楚了。这只是示例代码,不在我的程序中使用。
在某些情况下,您可以尝试使用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