arrays - 通过对象将数组分配给VBA中的一系列单元格
问题描述
我正在为工作生成一个自动化脚本,该脚本在单个目录中搜索存储在多个 CSV 文件中的数据,然后将这些数据合并到一个工作簿中。我能够毫无问题地提取数据(即为数组分配一系列值),但我似乎无法弄清楚如何进行反向操作。
执行我的脚本的那部分时我总是得到的错误是:
运行时错误“438”:对象不支持此属性或方法。
我将原因归结为.Range
and的组合.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 块
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
推荐阅读
- javascript - 带有详细信息+摘要的剧透标签
- javascript - 使用jQuery将多个输入类型日期放入href
- python - 在这种情况下,我不知道如何打印 5。我也尝试过 return
- flopy - 当一个包调用write_file()函数时如何控制数组格式,比如DISU包?
- python - 从 python 运行一个新的进程/可执行文件,它保持运行
- visual-studio - 如何修复 VSCode 错误中无法启动终端的问题?
- css - 元素从左居中而不是居中
- git - 如何在不使用 github cli 的情况下登录现有的 github 存储库
- python - 验证码安全和深度学习
- python - Discord.py 命令冷却特定 if 语句