通过对象将数组指定给VBA中的一组单元格



我正在为工作生成一个自动脚本,该脚本搜索存储在单个目录中的多个CSV文件中的数据,然后将这些数据合并到一个工作簿中。我能够毫无问题地提取数据(,即为数组分配一系列值(,但我似乎不知道如何进行反向操作。

在执行脚本的这一部分时,我总是会遇到以下错误:

运行时错误"438":对象不支持此属性或方法

我已经将原因归结为.Range.Cells的组合(如果我更改代码以将单个数组值分配给单个工作表单元格值,则两者都可以正常工作(。只有当我尝试将数组分配给一系列单元格时,才会出现错误所以,我的问题是:我为下面编写的简化脚本所追求的面向对象方法支持什么方法

Dim testarray(1 To 2, 1 To 2) As Integer
testarray(1, 1) = 1
testarray(1, 2) = 2
testarray(2, 1) = 3
testarray(2, 2) = 4
Set Target = Workbooks("_ConsolidatedData.xlsm")
Set wb = Target
Set ws = wb.Worksheets(1)
ws.Range(.Cells(1, 1), .Cells(2, 2)).Value = testarray(2, 2)
ws.Range(.Cells(1, 1), .Cells(2, 2)).Value = testarray(2, 2)

此行缺少带块

With ws
.Range(.Cells(1, 1), .Cells(2, 2)).Value = testarray 'no (2 ,2)
End with

不过,如果阵列大小发生变化,这两种方法都可以随心所欲,无需调整:

ws.Range("A1").Resize(ubound(testarray, 1), ubound(testarray, 2)).Value = testarray
ws.Cells(1, 1).Resize(ubound(testarray, 1), ubound(testarray, 2)).Value = testarray

最新更新