延迟绑定数组

本文关键字:数组 绑定 延迟 | 更新日期: 2023-09-27 18:04:21

我真的很困惑,因为我找不到任何在VBA中绑定数组。这可能吗?如果是,怎么做?如果不是,为什么?

注意:我不介意是否可以使用像

这样的本地。net/c#类型
Dim o as Object
set o = CreateObject("System.Array")

即使System.Array是COM可见的,似乎也不可能实例化它。

知道如何在VBA中绑定数组数据类型吗?

请不要提及Dictionary或Collections,因为这个问题是针对数组的


额外的信息:这是我另一个问题的后续问题。由于似乎不可能在没有循环的情况下将本机VBA数组传递到本机。net集合,我只是想知道是否有可能晚绑定一个数组,因为这两种数组似乎都是安全的,这意味着它们是兼容的,因此将VBA数组转移到。net是可能的-如果我完全错了,请纠正我。

延迟绑定数组

  set o = CreateObject("System.Array")

系统。Array是一个抽象类。所以不,这是不可能的。数组类型是特殊的,它们通常由编译器创建。这个后门是Type.MakeArrayType(),你可以构造这个

没有你想用的。不要太努力,任何VBA数组都可以转换为System。数组了。它通常只是一个不符合的数组,它的第一个元素不在索引0处。VBA喜欢1,除非您使用像Dim arr(0 To 3) As Double这样的语法或有效地使用Option Base 0。并不总是可能的,使用array. getvalue()来访问不一致的数组。查看另一个问题的示例访问器包装器。