2009-02-12 59 views
1

我已經在Excel中製作了一堆二維數組,並且我寫了一個函數將相同的數據放在每個數據的副本中。我不太確定我是否正確地修改了語法的錯誤部分。從函數傳遞和接收數組

該函數被稱爲'Fill',舊數組'Old'和新'New'。我使用名稱'Block'作爲傳遞變量名稱。

所以,在我的代碼行是:

New = Fill(Block:=Old()) 

而且我的函數的第一行是:

Function Fill(Block() As Variant) As Variant 

這給了我「老」陣列的類型不匹配錯誤,說它正在期待一個陣列。引導我認爲功能正常,並等待正確的類型,但沒有收到它。

我錯過了什麼?

回答

1

它已經一段時間,因爲我做了VBA編程,但我認爲以下是更可能是正確的:

NewArray = Fill(OldArray) 

Function Fill(Block As Variant) As Variant 

    Fill = Block 

End Function 
+0

您的編輯作品!非常感謝! – 2009-02-12 16:33:41

0

這裏是爲什麼你可能會得到你做了錯誤的一些注意事項。如果某個函數需要特定的類型,則必須將該變量聲明爲該類型。

Sub FillThis() 
'Declare OldArray as Variant ' 
'because that is what the function ' 
'requires. ' 
Dim OldArray As Variant 
'Similarly ...' 
Dim StringPart As String 

    'ByRef, so the variable will be ' 
    'changed by the function. ' 
    'Note that ByRef is the default. ' 
    Fill OldArray 

    For i = 0 To 4 
     Debug.Print OldArray(i) 
    Next 

    StringPart = "Part 1" 
    GetString StringPart 
    Debug.Print StringPart 
End Sub 

'In this example, Fill is not being returned, ' 
'so there is no need to declare it as anything ' 
Function Fill(ByRef OldArray As Variant) 
'The Array must be dimensioned ' 
ReDim OldArray(4) 

    For i = 0 To 4 
     OldArray(i) = i + 1 
    Next 

End Function 

Function GetString(ByRef StringPart As String) 
    StringPart = StringPart & " Add a Bit" 
End Function