【问题标题】:How do I assign a value to a property where the property name is supplied at runtime in VBA?如何为在 VBA 中运行时提供属性名称的属性赋值?
【发布时间】:2021-09-24 07:27:10
【问题描述】:

我正在尝试创建一个工作表,该工作表创建一个值列表,用于初始化实例化类的值。

例如,我的初始化工作表中可能有以下内容:

Property Name              Value
StartingCol                A
StartingRow                11

然后,我将创建一个类来解析此工作表并为我提供一个可用于初始化实例化对象的属性的 enumberable。但是,我不确定如何在运行时使用字符串指定属性值,而不是在代码中明确指定它。您可以在下面的代码中了解我要完成的工作:

Sub test_PropertyAssignment()
Dim sp As SheetParser
Dim strFieldName As String
Dim strFieldNameValue As String
Set sp = New SheetParser

'The property name is supplied explicitly'
sp.StartingCol = "B"

strFieldName = "StartingCol"
strFieldNameValue = "B"

sp.[how can I supply strFieldName to specify the property?] = strFieldNameValue 'Will not Work'

End Sub

有没有办法在运行时使用字符串来指定属性名称,而不是在代码中明确指定?

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    在 VBA 帮助中查找 CallByName 函数。
    您应该能够执行以下操作:

    Call CallByName(sp,strFieldName,vbLet,strFieldNameValue)
    

    【讨论】:

    • 这对 Let 属性分配非常有用。现在我试图弄清楚如何使它适用于尚未实例化的对象上的 Set 属性。另一个 SO 问题。
    • 你肯定需要一个实际的对象实例来使用 CallByName()。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-22
    • 1970-01-01
    相关资源
    最近更新 更多