VBA粘贴3维数组成表单

我有一个3维数组(5 x 5 x 3),我需要张贴(5 x 5 x 1)到Sheet1,(5 x 5 x 2)到Sheet2,(5 x 5 x 3)到Sheet3。 因为我在3个嵌套for循环中构build这个3维数组,所以我不能使用for循环来访问循环的(5 x 5)部分。 有没有任何标识符告诉excel通过使用(1:end,1:end,1)来索引数组的所有元素,比如在MatLab中? 基本代码如下:

Sub practice_2() Dim arr(1 To 5, 1 To 5, 1 To 3) Dim a As Integer Dim x As Integer Dim y As Integer For a = 1 To 3 For x = 1 To 5 For y = 1 To 5 arr(x, y, a) = x * y Next Next Sheets(a).Select 'Following line is where I want to access the (5 x 5 x 1) array Range(Cells(1, 1), Cells(5, 5)) = arr Next End Sub 

Excel中直接使用3-D数组的function并不多。 但是,VBA变体非常灵活。 您可以通过使用包含二维数组而不是三维数组的一维数组来获得所需的数据:

 Dim arr(1 To 3) Dim a As Integer Dim x As Integer Dim y As Integer For a = 1 To 3 ReDim inner(1 To 5, 1 To 5) 'don't worry...makes a copy arr(a) = inner For x = 1 To 5 For y = 1 To 5 arr(a)(x, y) = a * x * y Next Next Sheets(a).Select Range(Cells(1, 1), Cells(5, 5)) = arr(a) Next 

(在回答关于数组语法的具体问题时,答案是“否”。)