【发布时间】:2019-10-20 08:59:11
【问题描述】:
我想创建一个包含零个元素但可循环的 VBA 数组。
您可以查看下面的代码以了解我的意思:
Sub testloopemptyarr()
Dim spl() As String, v As Variant, count As Integer
spl = Split(Empty, ",") 'lbound=0, ubound=-1, zero elements
'ReDim spl(-1 To -1) ' one element
'ReDim spl(-1) ' does not compile: subscript out of range
'ReDim spl(-1 To 0) ' two elements
'ReDim spl(0 To -1) ' does not compile: subscript out of range
For Each v In spl
count = count + 1
Next
MsgBox count
End Sub
在这种情况下,msgbox 会弹出 0,因为拆分一个空字符串会返回一个零元素数组。遇到for循环没有报错,说明该数组是一个已分配的数组。
如果你测试一下,你会发现,调用Split()后,lbound(spl)为0,ubound(spl)为-1
但是ReDim spl(0 To -1) 是非法的(尝试取消注释该行并运行)
所以我的问题是:
如何创建一个与 Split() 函数产生的数组具有相同行为的数组?
【问题讨论】:
-
AFAIK 这是某些内置函数的异常行为。如果不使用这些功能之一,您将无法复制它。这在 CPearsom here 上进行了讨论