【发布时间】:2019-09-29 07:07:36
【问题描述】:
我遇到了一个我自己无法解决的问题,想知道这里是否有人可以教育我我做错了什么?该代码的目的是将一行信息(大约 60 个单元格)转移到另一个工作表中。
-
为了增加一些清晰度(我的最后一个问题很难理解):
RProjekt 包含以下单元格:E6;F15;F17;F19;F21;F23;I6;I8;I10;I15;I17;I19;I21;I23
RBkriterier 包含以下单元格:F30:K30;F31:K31;F32:K32;F33:K33;F34:K34
冲洗器包含以下单元: F45:K45;F46:K46;F47:K47;F48:K48;F49:K49
-
我希望下面的代码能说明我想要完成的工作。有什么建议么?感谢您的帮助!
-
Dim Bkriterier As Range
Dim Pinformation As Range
Dim inser As Range
Dim AllProjectInformation as range
Set Pinformation = InputSheet_Utveckling.Range("RProjekt") '"InputSheet_Utveckling" is a worksheet
Set Bkriterier = InputSheet_Utveckling.Range("RBkriterier") ' The "R ..." are named ranges consisting of several cells
Set inser = InputSheet_Utveckling.Range("Rinser")
Set AllProjectInformation = Union(Pinformation, Bkriterier, inser)
Dim i As Integer
For i = 1 To AllProjectInformation.Cells.Count
AllProjectInformation.Areas(i) = projectRow.Range(i) '"projectRow is from another routine that goes through a table looking for a project code. Once found, that specific row is (and the "address") is stored in projectRow of type ListRow
Next i
【问题讨论】:
-
只是一个盲注:将'For i = 1 To AllProjectInformation.Cells.Count'更改为'For i = 1 To AllProjectInformation.Areas.Count?
-
我认为您的问题是您通过
UNION创建了一个新的范围对象。您是否不尝试遍历这个新范围对象的每个单元格而不是使用Areas? >For each cl in AllProjectInformation............<code>............Next cl -
For Each是可靠地逐步遍历合并范围的单元格的唯一方法 - 如果您使用循环计数器,那么您最终将访问不在合并范围内的单元格(它将开始计算与第一个Area相邻但未包含在其中的单元格) -
@timwilliams,太好了。谢谢你。我显然必须阅读更多关于领域的内容。您有任何替代代码的建议吗? “projectRow”是不同工作表上表格中的特定行,它包含大约 60 个单元格。我不确定如何在不使用索引的情况下遍历“projectRow”上的所有单元格。
-
@JvdV,请参见上文。我无法在一条评论中标记 2 个用户