2D数组值在特定位置打印

我试图从一个特定的单元格开始,将二维数组的值放到工作表上。
例如,在单元格A1 ,我键入公式=testArray2Sheet(D7)
预期的结果是该值出现在工作表上,第一个值在单元格D7 ,向下跨越18行和3列。

我目前的代码只是停止执行在这一行: targetRange.Value = arr并退出,而不会targetRange.Value = arr警告或错误。
单元格A1只是说#VALUE
我不知道为什么…

 Function testArray2Sheet(firstCell As range) Dim ret As Boolean 'dummy return value Dim targetRange As range Dim lastCell As range Dim arr As Variant Dim rows, cols As Integer Dim i, j As Integer 'Determine size of array rows = 18 cols = 3 'Make sure the array has the new dimensions ReDim arr(1 To rows, 1 To cols) 'Fill the array with values For i = 1 To 18 For j = 1 To 3 arr(i, j) = i * j Next Next 'firstCell is the top-left corner of the targetRange 'Now determine the bottom-right corner of the targetRange Set lastCell = firstCell.Offset(rows, cols) 'Create the targetRange Set targetRange = range(firstCell, lastCell) 'Put the values of the array to the targetRange 'This should me the values appear in the worksheet targetRange.Value = arr 'Return a dummy value, because a function needs to return something testArray2Sheet = ret End Function 

要将数组移动到工作表中,请将数组公式(UDF)放入要接收值的单元格中。 说UDF是:

 Function testArray2Sheet() Dim targetRange As Range Dim arr As Variant Dim rows As Long, cols As Long Dim i As Long, J as Long rows = 18 cols = 3 'Make sure the array has the new dimensions ReDim arr(1 To rows, 1 To cols) For i = 1 To 18 For j = 1 To 3 arr(i, j) = i * j Next Next testArray2Sheet = arr End Function 

首先高亮显示一个单元格块,例如单元格B5D22
然后点击公式栏并input数组公式:

 =testArray2Sheet() 

(使用Ctrl + Shift + Enter而不是Enter键)

你应该看到:

在这里输入图像说明

它是input公式的单元格块,用于确定数组的目标。