循环范围不允许 Range(Cells,Cells) 仅 Range("A:A")
Posted
技术标签:
【中文标题】循环范围不允许 Range(Cells,Cells) 仅 Range("A:A")【英文标题】:Looping with ranges not allowing Range(Cells,Cells) only Range("A:A") 【发布时间】:2017-08-15 14:43:24 【问题描述】:背景:
我有一个 7 x 30 单元格的数组要循环。对于 30 列 (Dim j) 中的每一列,我循环遍历行 (Dim i) 1 以查看是否存在值,如果存在则开始复制第 2 到第 7 行的范围。
尝试使用(例如):
Sheets("NAME").Range(Cells(i+1,1),Cells(i+7,1)).Copy
我收到一个 1004,应用程序定义或对象定义的错误,我已经能够使用以下方法缓解:
Sheets("NAME").Range("A" & i+1 & ":A" & i+7 & ").Copy
我的代码在线出错:
Sheets("RM").Range(Cells(i + 6, 2), Cells(i + 13, 2)).Copy
问题:
这适用于具有已知列的项目,但我也不确定如何处理可变列。我知道这不起作用:
Sheets("NAME").Range(Cells(i+1,j),Cells(i+7,j)).Copy
我需要找到一种方法来拟合这个没有单元格的 Range 模型,以便为变量列 j 工作。
问题:
有没有办法在不使用单元格的情况下使用 Range 来完成这项工作?
我唯一的猜测是以下,我认为它使用了不正确的语法:
Sheets("NAME").Range(Columns(j) & i+1 & ":" & Columns(j) & i+1).Copy
任何帮助将不胜感激!
编辑:将错误 1004 名称添加到此问题部分。
【问题讨论】:
你遇到了什么错误? @ScottCraner 对不起,我错过了我只列出了“一个错误”,而不是该行的 1004 错误。更新了帖子,并添加了我收到错误的确切行(不是帖子的重新哈希)。 然后,正如下面的答案所示,您需要将相同的父级添加到Cells()
,就像您对 Range()
所做的那样:Sheets("NAME").Range(Sheets("NAME").Cells(i+1,1),Sheets("NAME").Cells(i+7,1)).Copy
【参考方案1】:
尝试在您的 Cells(
呼叫前加上工作表,即 Range(Sheets("Sheet1").Cells(1, 1), Sheets("Sheet1").Cells(2, 2))
当您在调用Cells
或Range
时省略工作表,那么它将默认引用当前选定的工作表,因此如果您调用Sheets(Unselected Sheet).Range(Cells(1, 1))
,它会混淆您是哪个工作表参考。
【讨论】:
问题正是我在回答中所说的。您需要在致电Cells
前加上工作表的名称,例如Sheets("NAME").Range(Sheets("NAME").Cells(i+1,1), Sheets("NAME").Cells(i+7,1)).Copy
明白了,我没看错,Scott 帮助将更多内容重新定向到您所说的内容。谢谢!标记为答案。
抱歉,如果我没有很好地解释它,解释 excel 如何查看引用等有点尴尬。祝你程序的其余部分好运!
谢谢哥们;正在删除我给你的第一条评论,就像你回复它一样。这是有道理的,当我看你给出的第一段时,我只是迷失在台词的延续上。我的错,你很坚强。以上是关于循环范围不允许 Range(Cells,Cells) 仅 Range("A:A")的主要内容,如果未能解决你的问题,请参考以下文章