如何在LO basic中创建数组并支持VBA 1

问题描述 投票:0回答:1

我有代码

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 文件链接

vba libreoffice-calc basic libreoffice-basic
1个回答
0
投票

首先,

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
永远不会被调用。

© www.soinside.com 2019 - 2024. All rights reserved.