微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过对象将数组分配给VBA中的一系列单元格

如何解决通过对象将数组分配给VBA中的一系列单元格

我正在为工作生成一个自动化脚本,该脚本在一个目录中搜索存储在多个CSV文件中的数据,然后将这些数据合并到一个工作簿中。我能够毫无问题地提取数据( ie 一个值的范围分配给数组),但是我似乎无法弄清楚如何进行反向操作。

执行脚本的那部分时总是得到的错误是:

运行时错误“ 438”: 对象不支持属性方法

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

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块

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

这些方法中的任何一种都可以完成您想要的操作,如果阵列大小发生更改,则无需进行调整:

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。