如何在VBA中引用全局变量

时间:2017-12-20 21:05:50

标签: vba ms-access

在Access VBA中,我知道您可以使用字符串Me("string")来引用对象。我想使用字符串在函数中引用全局变量,从而允许我将函数用于不同的状态。

e.g。我有invoiceBtninfoBtn按钮,我想调用相同的函数但使用不同的变量。全局变量infoBoolinvoiceBool

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()没有,是否有办法使用字符串获取对变量的引用?

编辑:我希望现在已经足够清楚了。这只是示例代码,不在我的程序中使用。

1 个答案:

答案 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