在excel中使用VBA:
我有一个函数,该函数要使用属性名称变量访问类属性。我可以使用带有CallByName的变量将MsgBox的属性值返回给我:
MsgBox CallByName(oThisInvoice, DataType, VbGet)
其中oThisInvoice是类对象,而DataType是包含要访问的属性名称的变量。该语句有效,并且是对以下内容的重写:
MsgBox oThisInvoice.InvoiceDate
但是,将值分配给相同属性时,无法使用相同方法:
CallByName(oThisInvoice, DataType, VbGet) = 5
不起作用,出现“运行时错误424:需要对象”错误。使用VbLet和VbSet也不起作用,并抛出“运行时错误446:对象不支持命名参数”。
这是对以下内容的重写:
oThisInvoice.InvoiceDate = 5
有效。
有人知道在使用变量引用属性名称时可以用来为VBA中的类属性赋值吗?
答案 0 :(得分:2)
CallByName(oThisInvoice, DataType, VbGet) = 5
当然,这不适用于设置值。您正在调用Get
过程,如使用VbGet
所证明。获取不设置值,而是获取它们。
您需要做的是将CallByName
与VbLet
一起使用:
CallByName oThisInvoice, DataType, VbLet, 5