Excel VBA将数组传递给函数

Excel VBA将数组传递给函数,excel,vba,Excel,Vba,我有一个函数可以创建数组数组,还有一个函数可以获取结果数组并将其写入电子表格。我找不到允许我将数组数组传递给第二个函数的语法。。。你能帮忙吗 例如,如果arr1和arr2各包含24个项目(它们始终包含相同数量的项目),我希望生成的数组是一个大小为24 x 2的二维数组,我希望生成的2 x 24表格写入电子表格,例如范围为A1:B24 这是我的密码: 创建数组数组的函数: Function GetCellDetails(dict1 As Dictionary, dict2 As Dictionar

我有一个函数可以创建数组数组,还有一个函数可以获取结果数组并将其写入电子表格。我找不到允许我将数组数组传递给第二个函数的语法。。。你能帮忙吗

例如,如果arr1和arr2各包含24个项目(它们始终包含相同数量的项目),我希望生成的数组是一个大小为24 x 2的二维数组,我希望生成的2 x 24表格写入电子表格,例如范围为A1:B24

这是我的密码:

创建数组数组的函数:

Function GetCellDetails(dict1 As Dictionary, dict2 As Dictionary)   As Variant

Dim arr1, arr2
arr1 = dict1.Items
arr2 = dict2.Items

GetCellDetails = Array(arr1, arr2)

End Function
将其写入电子表格的函数:

Sub WriteCellDataToMemory(arr As Variant, day As Integer, cellId As Integer, nCells As Integer)
row = CellIdToMemRow(cellId, nCells)
col = DayToMemCol(day)

arrSize = UBound(arr, 2) 'compiler error
Range(Cells(row, col), Cells(row + arrSize , col + 2)) = Application.Transpose(arr)

End Sub
调用函数的代码:

Dim CellDetails
CellDetails = GetCellDetails(dict1, dict2)
WriteCellDataToMemory CellDetails, day, cellId, nCells
我在以下方面遇到编译器错误:
arrSize=UBound(arr,2)
,因为编译器不知道arr是一个2维数组。。。 谢谢
Li

创建的
单元格详细信息实际上是一个一维数组<代码>Ubound(arr)
执行此任务

Sub Main()

    Cells.ClearContents

    Dim d1 As New Dictionary
    Dim d2 As New Dictionary

    d1.Add 1, "1"
    d1.Add 2, "2"
    d2.Add 3, "3"
    d2.Add 4, "4"

    Dim CellDetails
    CellDetails = GetCellDetails(d1, d2)

    WriteCellDataToMemory CellDetails

End Sub

Function GetCellDetails(dict1 As Dictionary, dict2 As Dictionary) As Variant

Dim arr1, arr2
arr1 = dict1.Items
arr2 = dict2.Items

GetCellDetails = Array(arr1, arr2)

End Function

Sub WriteCellDataToMemory(arr As Variant)

    Dim arrSize As Long
    arrSize = UBound(arr)
    Range(Cells(1, 1), Cells(1 + arrSize, arrSize+1)) = Application.Transpose(arr)

End Sub
也许一个例子可以帮助你理解

因此,您有一个多维的
obj1
objX


您可以将它们粘贴在一个一维数组中,将它们存储为对象

谢谢,但是您能解释一下为什么生成的数组是一维数组吗?这不是一个2 x UBound(dict1.Items)的表格吗?只是如果arr1和arr2每个都包含24个项目(它们总是包含相同数量的项目),我希望将一个2*24的表格写入电子表格,例如范围A1:B24Got,谢谢:)所以在我的例子中,我实际上需要更改:arrSize=UBound(arr,2)为arrSize=UBound(arr(1))@我知道你用什么程序来制作这些图像?@Blackhawk猜不到?是油漆:)