excel - 将范围传输到动态数组会导致运行时错误 1004
问题描述
尝试将范围从一个工作簿复制到另一个工作簿 - 在此过程中将对数据集执行其他任务,但这是我现在想要的要点。源工作簿中的范围不是静态的;这意味着每次生成报告时,必要的信息将出现在相同的列但不同的行中。范围中间有一列空白,我将忽略几列 - 以及一些数据计算/转换。为了尝试帮助解决源工作簿中数据位置的某种不可预测的性质,我将我的范围命名为 sub 中的变量 - 我不确定这是否是问题所在。一切似乎都在进行中,除非我将范围放入数组中。这是我所拥有的:
Sub GetElemArray()
Dim fndrng As Range
Dim rEleAn As Range
Dim frst As Range
'the rest of the variables below are global
Workbooks(SheetName).Activate
Worksheets("Report").Activate
Columns(2).Select
Set fndrng = Selection.Find("Analyte")
Set frst = fndrng.Offset(1, 0)
Set rEleAn = Range(frst, fndrng.End(xlDown).End(xlToRight))
EleList = rEleAn.Rows.Count
ColList = rEleAn.Columns.Count
ReDim ElAr(0 To EleList, 0 To ColList)
For EleList = LBound(ElAR, 1) To UBound(ElAr, 1)
For ColList = LBound(ElAr, 2) To UBound(ElAr, 2)
'The following line returns the Runtime 1004 error
ElAr(EleList, ColList) = Range(frst).Offset(EleList, _
ColList).Value
Next ColList
Next EleList
Code to Do Other Stuff
End Sub
查看 Locals 窗口,我可以看到rEleAn
将其值存储为.Value2
. 我尝试将 Range 更改为此属性,但它仍然返回相同的错误。在 Locals Window 中查看,据我所知,所有内容都已正确分配。
关于发生了什么的任何想法?
解决方案
如果我正确理解您的评论,请尝试:
Sub GetElemArray()
Dim fndrng As Range
Dim rEleAn As Range
Dim frst As Range
'the rest of the variables below are global
Set fndrng = Worksheets("Report").Columns(2).Find("Analyte")
Set frst = fndrng.Offset(1, 0)
Set rEleAn = Range(frst, fndrng.End(xlDown).End(xlToRight))
ElAr = rEleAn
'Code to Do Other Stuff
End Sub
推荐阅读
- maven - 尽管在 pom.xml 中排除了重复的 JAR,但仍被复制
- angular - 如何在ionic3中使用ngx-walkthrough
- c - 星号位置在 C 函数构建中意味着什么?
- asp.net - 将 media_ids 添加到 Twitter API 调用会导致身份验证问题
- regex - 匹配大写单词
- ruby-on-rails - Faker 问题在belongs_to 关系上播种数据
- java - OTP 没有从 firebase 代码中获取是正确的
- c# - 如何在单元测试中忽略 SQL 重试策略?
- javascript - 无法通过 url 访问 Ember 子路由并将我重定向到父路由
- json - IBM Watson 对话:如何从上下文变量访问 JSON 对象?