多次元配列も1次元配列と同様for文・foreach文で列挙することができます。 ただ、foreach文で多次元配列を列挙する場合、行や列ごとといった部分配列が列挙されるのではなく、次元が平坦化された1次元の数列として列挙されます。 この際、多段配列内の各要素は、より高い次元にあるインデックスの小さい要素から順に列挙されます。 そのため、多次元配列から行や列ごとに要素を抽出したい場合は、foreach文ではなくfor文でインデックスを指定して列挙する必要があります。

for・foreachで2次元配列を列挙する
Imports System

Class Sample
  Shared Sub Main()
    ' 3×4個の要素を持つ2次元配列
    Dim matrix As Integer(,) = { _
      {0, 1, 2, 3}, _
      {4, 5, 6, 7}, _
      {8, 9, 10, 11} _
    }

    ' Forステートメントを使って列挙
    For d1 As Integer = 0 To matrix.GetLength(0) - 1
      Console.Write("( ")
      For d2 As Integer = 0 To matrix.GetLength(1) - 1
        Console.Write("{0}, ", matrix(d1, d2))
      Next
      Console.WriteLine("), ")
    Next
    Console.WriteLine()

    ' For Eachステートメントを使って列挙
    For Each elem As Integer In matrix
      Console.Write("{0}, ", elem)
    Next
    Console.WriteLine()
  End Sub
End Class
実行結果
( 0, 1, 2, 3, ), 
( 4, 5, 6, 7, ), 
( 8, 9, 10, 11, ), 

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,