2016-11-10 66 views
0

在VBA我們可以使用陣列()來創建矢量(1D陣列) 例如。 Vector = Array(1,2,3)創建內VBA一個(硬編碼)矩陣陣列

我們如何建立一個2×3矩陣?它將如何3x2? 例如。 Matrix = Array(1,2,3;4,6,7)

由於

嘗試下面

方法之一是雖然繁瑣的解決方案。有靈活/更大的陣列嗎?

Option Explicit 1 

Private Sub MatrixDemo() 
    Dim arr(2,3) as Variant ' Which has 2 rows and 3 columns  
    arr(1,1) = 1   
    arr(1,2) = 2   
    arr(1,3) = 3      
    arr(2,1) = 4   
    arr(2,2) = 5    
    arr(2,3) = 6   
End Sub 

方法2更靈活,但我必須設置逗號來定義維度。我們可以在飛行中運行嗎?

Dim matrix = New Integer(2, 3) {{1, 2}, {3, 4}, {6, 7}} 
+0

用於填充一個二維數組,您將需要一個循環 –

+0

循環只能如果有一個計算,其中的內容是一個FN(I,J)位置 ?? – rrg

+0

我會建議Microsoft開發人員網絡[在VBA中聲明數組]的以下文檔(https://msdn.microsoft.com/en-us/library/x397t1yt(v = vs.90).aspx) –

回答

2

該函數將返回你想要的矩陣。

只是通過它,你需要Create_Matrix(3, 2)的行和列,它會retrun與遞增值的數組。

Function Create_Matrix(x As Long, y As Long) As Variant 

    Dim Arr() As Variant ' Matrix array 
    Dim i As Long ' rows 
    Dim j As Long ' columns 
    Dim k As Long ' increment counter 


    ReDim Arr(1 To y, 1 To x) 

    For i = 1 To y 

     For j = 1 To x 

      k = k + 1 

      Arr(i, j) = k 

     Next j ' next column 


    Next i ' next row 


    Create_Matrix = Arr 

End Function 

你的陣列應該是第一個宣佈Variant

+0

這會創建一個矩陣的連續數字。將給定矩陣維度的向量轉換爲矩陣,怎麼辦? – rrg