vba sub将文本字符串插入到类对象引用中

时间:2014-04-05 00:01:16

标签: string class vba object reference

我对此很陌生,所以如果我搞砸了任何一个术语,我很抱歉。非常感谢任何人的帮助或想法。

我有以下错误的代码:

Sub ExampleSub(text As String)
  ClassObject." & text & "_attribute = 1
End Sub

因此,如果我调用ExampleSub(“cheese”),我希望将ClassObject.cheese_attribute设置为1。

有什么想法?我甚至不确定它是否可能。

非常感谢!

1 个答案:

答案 0 :(得分:1)

这是另一种可行的方法。使用脚本字典对象作为classobject的Properties之一。 The Dictionary Object is pretty neat,将元素存储在键/值对中,其中键是一个字符串,值可以是任何其他类型(对象,范围,工作簿,整数,变体/数组等)

因此,您可以使用字典对象来包含所有这些命名属性。在您的类模块中,添加如下代码:

Private pAttributes as Object

Sub Class_Initialize()
    '## Initialize this object to avoid a 91 error
    Set pAttributes = CreateObject("Scripting.Dictionary")
End Sub

Public Property Get Attributes() As Object
    Set Attributes = pAttributes
End Property
Public Property Let Attributes(lAttributes As Object)
    Set pAttributes = lAttributes
End Property

然后,在您的代码中,您可以简单地执行:

Sub ExampleSub(text As String)
  ClassObject.Attributes(text) = 1
End Sub

如果项目尚不存在,则调用字典键会自动添加该项目,但如果您想要更多控制权,则可以执行以下操作:

Sub AnotherExample(text as String)
    If ClassObject.Attributes.Exists(text) Then
        MsgBox text & " already exists!", vbInformation
    Else:
        ClassObject.Attributes(text) = 1
    End If
End Sub