数组vba的最大填充维数

说我有一个单维数组(保持简单)。 有没有一种简单的方法来说明显式赋值的元素的最高索引? 除了循环和计数? 我知道Ubound发现数组的最高维度,但这不是我所需要的。 有没有像Ubound的东西,但它只计数数组的填充元素,或填充最高的索引?

我的数组包含string。 另外,如果数组是多维的呢?

我在excel vba工作。

简而言之,不是没有build立机制来做到这一点,但如果你正在寻找一种方法来破解它,那么请继续阅读。

这取决于你如何填充arrays。 如果是连续的,最简单的就是有一个柜台。

如果它是随机的,那么对于find最后一个元素的确切索引就会有更大的挑战。 一个想法,就是从最大开始,开始倒计时。

如果数组已初始化,则可以计算默认值并从ubound中减去。

还有其他的想法,但是你需要更清楚地定义问题,给我们更好的回答机会。 最好用一个例子。

我build议你使用ReDim Preserve来填充数组。 因此UBound将会为你工作的很好。 只有multidimensional array中的最后一个维才能被重新定义。

您可能会考虑使用包含数组variables的自定义类,将数据添加到数组中的代码也会修改另一个variables以跟踪“已使用”索引编号。 然后你可以包含一个函数来返回存储的“最高索引”号码。

当然,循环确实没有错,但是…

说你有这个:

Public Sub test() Dim a(1 To 3) a(1) = 1 a(2) = "stuff" Debug.Print Application.WorksheetFunction.CountA(a) End Sub 

这将打印“2”,因为第三个元素的默认值是“Empty”。 (注意,你的数组必须被声明为typesVariant才能工作,但是它可以包含Stringtypes的元素,如果你的数组是Stringtypes的,那么就没有任何容器!)当然,这个假定你知道你所有的空白在最后,因为它只是计数,而不是实际返回索引。 出于同样的原因,你必须知道你的值在二维数组中的分布,这是有意义的。

我想这是你要找的,根据你的编辑。