2011-05-18 58 views
4

這聽起來像一個愚蠢的問題,但我對拉聽得出來。的Visual Basic 6陣列作爲參數

我有一個Sub由此我想分析陣列並將其分配給一個類模塊「對象」。

我如何去這樣做。

我確實有不工作是:

Private matrix(9,9) As Integer 
'The Setter Sub 
Public Sub SetMatrixArray(arrValToSet() as Integer) 
    matrix = arrValToSet 
End Sub 


'In the caller module/class module I have the following code to parse the array. 

Dim theArray(9,9) As Integer 
Dim customObj as CustomObject 
customObj.SetMatrixArray(theArray) 

我收到以下錯誤信息:

類型不匹配:數組或用戶定義類型預期。

+0

Dabblernl的答案應該有效。如果你有更多的問題,[this](http://www.cpearson.com/excel/passingandreturningarrays.htm)似乎是相當不錯的一種數組資源(它是關於VBA的,但是這足夠接近於有用)。 – 2011-05-18 20:29:54

+0

@ ho1我並不反對,但他調用SetMatrixArray的語法不正確。我正在查看[this](http://msdn.microsoft.com/en-us/library/wcx04ck5(VS.85).aspx)。我錯了嗎? – 2011-05-18 20:38:38

+0

@Jay:不,我認爲你完全正確。我太習慣VB.Net,所以直到現在我才注意到那些額外的括號。我認爲你需要結合你和Dabblernl的答案。 – 2011-05-18 20:51:55

回答

6

這工作:

'In the caller module/class module I have the following code to parse the array.' 
    Dim theArray(9,9) As Integer 
    Dim customObj as CustomObject 
    customObj.SetMatrixArray theArray 

'類'

Private matrix() As Integer 
     'The Setter Sub ' 
     Public Sub SetMatrixArray(arrValToSet() as Integer) 
     matrix = arrValToSet 
    End Sub 

所以去除矩陣陣列的尺寸在您的類。您可以隨時執行錯誤檢查,如果尺寸必須準確9.

編輯:我刪除周圍的程序調用的括號不假思索測試時,它可能會影響到答案。

+1

是的,這被稱爲「聲明動態數組」。 – Bob77 2011-05-19 03:29:55

+0

VB不允許你重新分配一個你已經給它一個大小的數組。以上聲明不起作用。 – Koekiebox 2011-05-19 16:15:43

+0

讓我改說一下。如果theArray()沒有賦值theArray(9,9),它會工作。我修改了答案。做得好。今天學到了新東西! – Koekiebox 2011-05-20 13:49:10

3

我認爲你需要通過數組作爲一個變型多維數組

Public Sub SetMatrixArray(arrValToSet as Variant) 
    matrix = arrValToSet 
End Sub 

退房this文章。

3

當你調用customObj.SetMatrixArray()嘗試之一:

刪除周圍的過程參數的括號:

customObj.SetMatrixArray theArray 

- 或 -

Call你作序電話:

Call customObj.SetMatrixArray(theArray) 
+0

+1您可以在VB6中遇到奇怪的情況,其中添加額外的括號將您的參數轉換爲表達式 – MarkJ 2011-05-19 08:42:07