尝试使用数字名称调用VBA对象

尝试使用数字名称调用VBA对象,vba,object,Vba,Object,我有一个VBA对象,正在尝试调用子对象的属性 Object.key1.1.property 我收到一个错误,因为嵌套对象的名称是一个数字 如果我使用 Object.key1.[1].property 我得到一个运行时错误438 有人知道我怎么称呼这个地方吗 更新:一些背景信息。对象(而不是集合)是通过JSon解析宏从JSon字符串中创建的 根据“本地人”窗口的图片,我尝试使用: JsonObject.data0.item(1).AccountTypeID 获取一个值,但item方法不起作用

我有一个VBA对象,正在尝试调用子对象的属性

Object.key1.1.property
我收到一个错误,因为嵌套对象的名称是一个数字

如果我使用

Object.key1.[1].property
我得到一个运行时错误438

有人知道我怎么称呼这个地方吗

更新:一些背景信息。对象(而不是集合)是通过JSon解析宏从JSon字符串中创建的

根据“本地人”窗口的图片,我尝试使用:

JsonObject.data0.item(1).AccountTypeID

获取一个值,但item方法不起作用。

我不得不说,我甚至无法设想在VBA中创建名称为数字的属性的方法。我不相信你能在VBA中做到这一点,我也不知道即使你创建了自己的库也能做到。所以最明显的问题是你确定你的财产参考是正确的吗

假设理论上存在这样一个属性的可能性,那么就可以通过
CallByName()
函数在VBA中调用它,该函数可以通过作为字符串传递的属性名称检索属性

假设您想访问
ThisWorkbook.ActiveSheet.Rows.Count
属性-也就是说,在您的术语中,所需的子对象是
Rows
及其所需的属性
Count
-然后您可以使用以下语法实际执行此操作:

Dim childObj As Range

Set childObj = CallByName(ThisWorkbook.ActiveSheet, "Rows", VbGet)
Debug.Print childObj.Count
您发布的问题太牵强了,我甚至无法创建一个名为
1
的属性的测试对象,因此我无法为您的特定示例验证这一点,但可能,只是可能,该函数可以为您工作:

Set childObj = CallByName(Object.Key1, "1", VbGet)
Debug.Print childObj.Property

哪种类型的VBA对象具有数字名称?你确定它不是索引吗?(例如,
key1
可能返回一个集合或数组,您可以将其索引为
Object.key1(1)
,并使用
Object.key1(1.property
)获取该集合/数组位置的
属性