Excel VBA – 如何使用单个命令从3Dmatrix中复制2Dmatrix内容?

我有一个3Dmatrix,其中包含我想要使用以下命令在一系列单元格中写入的内容:

Worksheet.Range(Worksheet.Cells(RowStart, ColumnStart), Worksheet.Cells(RowEnd, ColumnEnd)).Value = MyData 

问题是MyData的数据实际上是由3Dmatrix的第一维的index = 2来描述的。

由于我没有看到在这里使用Application.WorksheetFunction.Index的可能性,所以我想将3Dmatrix的整个特定索引的内容复制到2D中。

这是可能的,而不必诉诸For循环(或写一个子程序)?

我刚刚做了这个自定义Sub来显示3D数组的一部分:

 Public Sub Print2D_of_3D_Array(ByVal ArrayT As Variant, _ ByVal FixedDim As Integer, _ ByVal FixedDimValue As Double, _ ByRef Sheet_to_PrintOn As Worksheet, _ Optional ByVal DeleteSheet As Boolean = False) If DeleteSheet Then Set Sheet_to_PrintOn = DeleteAndAddSheet(Sheet_to_PrintOn) Select Case FixedDim Case Is = 1 For i = LBound(ArrayT, 2) To UBound(ArrayT, 2) For j = LBound(ArrayT, 3) To UBound(ArrayT, 3) Sheet_to_PrintOn.Cells(i + 1, j + 1) = ArrayT(FixedDimValue, i, j) Next j Next i Case Is = 2 For i = LBound(ArrayT, 1) To UBound(ArrayT, 1) For j = LBound(ArrayT, 3) To UBound(ArrayT, 3) Sheet_to_PrintOn.Cells(i + 1, j + 1) = ArrayT(i, FixedDimValue, j) Next j Next i Case Is = 3 For i = LBound(ArrayT, 1) To UBound(ArrayT, 1) For j = LBound(ArrayT, 2) To UBound(ArrayT, 2) Sheet_to_PrintOn.Cells(i + 1, j + 1) = ArrayT(i, j, FixedDimValue) Next j Next i Case Else MsgBox "error" End Select End Sub 

所以,你必须像这样使用它:

 Call Print2D_of_3D_Array(MyArray, 1, 2, WorksheetVariable, False)