返回从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。

任何建议

+0

您的代码不会引发任何错误,对我来说,我只是复制和粘贴。再看一下,看看是否有任何改变。 – Frank 2014-08-31 10:32:38

+0

将值放入* MinArray中的代码在哪里?* – 2014-08-31 11:04:49

+0

Indexmin LUST是一个动态数组,它具有与函数返回值相同的类型。将不会在测试子版本中使用Variant。 – 2017-08-10 15:31:16

代码工作,如果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