Excel 将范围传输到动态数组时出现运行时错误1004
试图将一个范围从一个工作簿复制到另一个工作簿-在这个过程中会对数据集执行其他任务,但这就是我现在想要的要点。源工作簿中的范围不是静态的;这意味着每次生成报告时,必要的信息将显示在相同的列中,而不是相同的行中。有一个空白列在中间的范围和几个列,我将忽略-连同一些计算/数据转换。为了帮助解决源工作簿中数据位置的不可预测性,我在子工作簿中将我的范围命名为一个变量,我不确定这是否是问题所在。一切似乎都在进行中,除了我将范围放入数组时。以下是我得到的:Excel 将范围传输到动态数组时出现运行时错误1004,excel,vba,Excel,Vba,试图将一个范围从一个工作簿复制到另一个工作簿-在这个过程中会对数据集执行其他任务,但这就是我现在想要的要点。源工作簿中的范围不是静态的;这意味着每次生成报告时,必要的信息将显示在相同的列中,而不是相同的行中。有一个空白列在中间的范围和几个列,我将忽略-连同一些计算/数据转换。为了帮助解决源工作簿中数据位置的不可预测性,我在子工作簿中将我的范围命名为一个变量,我不确定这是否是问题所在。一切似乎都在进行中,除了我将范围放入数组时。以下是我得到的: Sub GetElemArray()
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
通过“局部变量”窗口,我可以看到rEleAn
将其值存储为.Value2
。我尝试更改此属性的范围,但它仍然返回相同的错误。从“本地人”窗口中可以看出,所有的东西都被正确地分配到了附近
关于正在发生的事情有什么想法吗?如果我正确理解您的评论,请尝试:
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
激活一个工作表,然后立即激活另一个工作表。请阅读并留心。这和您试图做的一样:ElAr=relian吗?而您的Redim将使数组的行和列分别为1行和1列big@Jeeped非常确定我激活的是工作簿(SheetName)——SheetName变量来自表单——然后是工作表(“报告”)。但我会考虑避免选择,谢谢。@EvR是的,这就是我要做的。早上上班的时候,我会给EleList和ColList一个减号,看看这能不能解决问题。谢谢。@Jeeped,将SheetName变量更改为FlNm以避免混淆。按照EvR的建议避免选择。谢谢早些时候,我也尝试过类似的方法,不过有点冗长。我几乎完全尝试了您所写的内容-我必须将
Sheet1
更改为Report
,因为我无法控制从中获取数据的工作表的名称。不幸的是,这仍然无法捕获阵列的数据。我的本地窗口中没有变量。我添加了EleList=rEleAn.Rows.Count-1
和ColList=rEleAn.Columns.Count-1
,根据您之前关于范围大小不正确的陈述。这不起作用。我还保留了计数的-1,并将Value
更改为Value2
。不行,Nvm,我已经解决了ElAr(EleLst,ColLst)=范围(frst).Offset(EleLst,ColLst).Value
需要是ElAr(EleLst,ColLst=frst.Offset(EleLst,ColLst).Value
。运行时错误1004突然出现,因为范围(frst)
在工作表中查找命名范围,而不是VBA定义的变量范围。我刚刚意识到您的变量范围也可以工作。@EvR。我在“局部变量”窗口中查找变量信息,而不是试图打印到工作表中。标记为已解决。感谢您的帮助。