我有代码
Const maxPump As Byte = 3
Public ArrPump(1 to maxPump) As TPump
在我写之前它会起作用
Option VbaSupport 1
在我遇到这样的错误之后
basic error '9' index out of defined range
我使用 libreoffice basic。我该如何解决这个问题?
我的TPump类型
Type TPump
Run As Boolean
Err As Boolean
Time As Integer
End Type
我写了这段代码
Public ArrPump() As TPump
Sub initArr()
ReDim Preserve ArrPump(3)
ArrPump(1).Run = True
ArrPump(1).Err = False
ArrPump(1).Time = 10
ArrPump(2).Run = False
ArrPump(2).Err = True
ArrPump(2).Time = 20
ArrPump(3).Run = True
ArrPump(3).Err = False
ArrPump(3).Time = 30
End Sub
但是当我在初始化数组之后使用此代码
If ArrPump(i).Run Then
时,我收到错误
basic error '9' index out of defined range
https://dropmefiles.com/27ShZ LO 文件链接
首先,
9
是不是索引。相反,它是错误消息的标识符,在文本中描述为“索引超出定义范围”。你的 initArr()
恰好有 9 条线,这只是巧合。
现在,下面的代码就可以了。
initArr
MsgBox "Array size is " & LBound(ArrPump) & " to " & UBound(ArrPump)
i = 1
If ArrPump(i).Run Then
MsgBox("OK")
End If
但是,如果我们注释掉调用
initArr
的行,那么它会显示 Array size is 0 to -1
并产生帖子中显示的错误消息。所以看起来您的电子表格中的问题是 initArr
永远不会被调用。