arrays - ReDim 保留二维变量数组
问题描述
这似乎是关于这个主题的第 100 万个问题,但搜索并没有帮助我。
我正在尝试调整二维数组的最后一个维度的大小,但总是在 ReDim Preserve 行中出现“索引超出范围”错误。
Dim arrCurrentDataset As Variant
For i = 0 To UBound(fileNames) - 1
strPath = fileNames(i)
Set wkbSource = Workbooks.Open(Filename:=strPath, UpdateLinks:=xlUpdateLinksNever, ReadOnly:=True, Notify:=True)
Set wksSource = wkbSource.Sheets(1)
Dim lngRows As Long
lngRows = wksSource.UsedRange.SpecialCells(xlCellTypeLastCell).Row
'Store dataset to array and afterwards increase second dimension by 2 -> create space to add Materialart and Beschaffungsart
arrCurrentDataset = wksSource.Range("A4:I" & lngRows).value
ReDim Preserve arrCurrentDataset(UBound(arrCurrentDataset, 1), UBound(arrCurrentDataset, 2) + 2)
'...
next i
我的声明有问题吗?我是否隐式尝试更改数据类型?
非常感谢你的帮助!
解决方案
您的数组维度基于 1,但默认值为 0(除非您有Option Base 1
声明),因此您必须在以下内容中指定Redim
:
ReDim Preserve arrCurrentDataset(1 to UBound(arrCurrentDataset, 1), 1 to UBound(arrCurrentDataset, 2) + 2)
推荐阅读
- mongodb - 'MongoNetworkError' 'TransientTransactionError' ] unable to run the code
- powershell - 使用 csv 在带有 powershell 的 office 365 中分配许可证
- c - 取消引用“for”循环初始化程序中的指针会导致分段错误
- html - css trick disable text selection on copy-paste
- authentication - Camel sftp - jsch 身份验证失败
- javascript - 多个命名路由器出口 - 组件已导入但未初始化和渲染
- asp.net - AddToRoleAsync() freezes IIS(?) on Chrome
- bash - 重定向标准错误并保留标准输出
- vue.js - Vuejs build/render component inside a method and output into template
- r - 如何根据以某个前缀开头的一列名称值将数据框拆分为不同的数据框?