Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在VBA中更新Ojbect字段?_Vba_Excel - Fatal编程技术网

如何在VBA中更新Ojbect字段?

如何在VBA中更新Ojbect字段?,vba,excel,Vba,Excel,当我使用VBA时,我想按函数更新对象的字段,但我不知道怎么做 A有人给我一些建议吗 Type MyObject a as String b as Boolean End Type 'update function Sub update(ByVal o as MyObject, key as String, value as string) o.key = value 'this is what I want to do! End sub 我对VBA不太了解,这可能吗?

当我使用VBA时,我想按函数更新对象的字段,但我不知道怎么做

A有人给我一些建议吗

Type MyObject
    a as String
    b as Boolean
End Type

'update function
Sub update(ByVal o as MyObject, key as String, value as string)
    o.key = value 'this is what I want to do!
End sub

我对VBA不太了解,这可能吗?

您不能设置名为
key
的字段的任何值,因为在
MyObject
的定义中不存在这样的键。您可以这样做:

o.a = key
o.b = value
编辑

要指定要更新的字段,可以向函数中添加条件语句

If key = "a" Then
    o.a = value
Else
    o.b = value
End If

很抱歉,您无法循环一个类型中的所有字段,因为VBA不支持反射。

我还要强烈警告调用
类型
类似
MyObject
的对象和类型是两种特定的东西。如果您的类型名对其功能或用途更具描述性,那么编写代码就容易多了。谢谢您的回答。但是函数的用途是当函数被调用时,我不知道a会被更新还是b会被更新,所以我想像“update(myObject,“a”,“valueofA”)或update(myObject,“b”,“true”)那样调用函数是的!没错!我知道我现在应该做什么了!非常感谢!