我对此很陌生,所以如果我搞砸了任何一个术语,我很抱歉。非常感谢任何人的帮助或想法。
我有以下错误的代码:
Sub ExampleSub(text As String)
ClassObject." & text & "_attribute = 1
End Sub
因此,如果我调用ExampleSub(“cheese”),我希望将ClassObject.cheese_attribute设置为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