String vba子类在类对象引用中插入文本字符串

String vba子类在类对象引用中插入文本字符串,string,class,vba,object,reference,String,Class,Vba,Object,Reference,我对这个很陌生,所以如果我弄错了任何行话,我很抱歉。非常感谢任何人的帮助或想法 我有以下错误代码: Sub ExampleSub(text As String) ClassObject." & text & "_attribute = 1 End Sub 因此,如果我调用ExampleSub(“cheese”),我希望它将ClassObject.cheese_属性设置为1 有什么想法吗?我甚至不确定这是否可能 非常感谢 这是另一种可能有效的方法。使用脚本字典对象作为类对象的

我对这个很陌生,所以如果我弄错了任何行话,我很抱歉。非常感谢任何人的帮助或想法

我有以下错误代码:

Sub ExampleSub(text As String)
  ClassObject." & text & "_attribute = 1
End Sub
因此,如果我调用ExampleSub(“cheese”),我希望它将ClassObject.cheese_属性设置为1

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


非常感谢

这是另一种可能有效的方法。使用脚本字典对象作为类对象的
属性之一
,以键/值对存储元素,其中键是字符串,值可以是任何其他类型(对象、范围、工作簿、整数、变量/数组等)

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

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

非常确定不能用这样的文本限定符引用对象。你的问题以一个不太可能的答案为前提。您能否更详细地描述您的数据结构、您试图解决的问题等。?如果我们对您实际要做的事情了解得更多,可能会有更好的解决方案。请看
CallByName
——非常简洁。非常感谢。我已经在这里使用了示例代码,到目前为止,我看不出有什么理由不起作用。在接下来的几天里,我将在我的实际项目中试一试。如果成功的话,我会结束这个案子,并将其标记为已解决。非常感谢你@洛根,你有机会回顾一下吗?如果是这样,请考虑接受这个答案…抱歉延误。行!非常感谢你的帮助。这是一个非常强大的方法!!不用担心,我问这个问题的原因是因为其他人也有类似的问题,我也想为他们提出一个可能的解决方案。干杯