dim a(100)
a(0)=9,a(1)=3,a(2)=-3,a(3)=8,a(4)=2
我怎样才能找到所用数组的大小(即使用的大小是5
答案 0 :(得分:2)
你必须计算非空元素:
Option Explicit
Function UsedElms(a)
UsedElms = 0
Dim i
For i = 0 To UBound(a)
If Not IsEmpty(a(i)) Then UsedElms = UsedElms + 1
Next
End Function
Dim a(5)
a(2) = 2
a(4) = 4
WScript.Echo "ub:", UBound(a), "sz:", UBound(a) + 1, "us:", UsedElms(a)
输出:
cscript 23027576.vbs
ub: 5 sz: 6 us: 2
答案 1 :(得分:0)
这是我刚刚想到的一个hacky单行。它基本上通过将空元素转换为空格然后将它们修剪掉来计算空元素的数量。
intLastIndex = UBound(a) - Len(Join(a, " ")) + Len(Trim(Join(a, " ")))
只为了好玩!不要把它放入你的生产代码中。作为两个班轮肯定会更有效率:
s = Join(a, " ")
intLastIndex = UBound(a) - Len(s) + Len(Trim(s))
但是,Ekkehard在这里有正确的答案。只有在连续填充数组时,此hack才有效。