返回从VBA函数简单数组抛出错误时分配给变体或其他阵列
问题描述:
以下是我的函数:返回从VBA函数简单数组抛出错误时分配给变体或其他阵列
Function FindMin(MinArray() As Integer) As Integer()
Dim Min As Integer
Dim Index As Integer
Dim ReturnArray(2) As Integer
Dim i As Integer
Min = MinArray(0)
Index = 1
'MsgBox UBound(MinArray, 1) - 1
For i = 1 To UBound(MinArray, 1) - 1
If MinArray(i) < Min Then
Min = MinArray(i)
Index = i + 1
End If
Next i
ReturnArray(0) = Min
ReturnArray(1) = Index
'MsgBox ReturnArray(0)
FindMin = ReturnArray()
End Function
下面是它分配给Variant
Dim IndexMin As Variant
IndexMin = FindMin(MinArray)
Min = IndexMin(0)
Index = IndexMin(1)
值分配,而代码调试代码但它会得到一个“Object variable或With block Variable not set Runtime Error。
任何建议
答
代码工作,如果MinArray已初始化:
Sub MAIN()
Dim IndexMin As Variant
Dim MinArray(0 To 3) As Integer
MinArray(0) = 4
MinArray(1) = 1
MinArray(2) = 12
MinArray(3) = 15
IndexMin = FindMin(MinArray)
Min = IndexMin(0)
Index = IndexMin(1)
MsgBox Min & vbCrLf & Index
End Sub
Function FindMin(MinArray() As Integer) As Integer()
Dim Min As Integer
Dim Index As Integer
Dim ReturnArray(2) As Integer
Dim i As Integer
Min = MinArray(0)
Index = 1
For i = 1 To UBound(MinArray, 1) - 1
If MinArray(i) < Min Then
Min = MinArray(i)
Index = i + 1
End If
Next i
ReturnArray(0) = Min
ReturnArray(1) = Index
FindMin = ReturnArray()
End Function
您的代码不会引发任何错误,对我来说,我只是复制和粘贴。再看一下,看看是否有任何改变。 – Frank 2014-08-31 10:32:38
将值放入* MinArray中的代码在哪里?* – 2014-08-31 11:04:49
Indexmin LUST是一个动态数组,它具有与函数返回值相同的类型。将不会在测试子版本中使用Variant。 – 2017-08-10 15:31:16