如何在VBA中引用全局变量

问题描述 投票:-1回答:1

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

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

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

vba ms-access
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.