【发布时间】:2018-07-10 20:22:54
【问题描述】:
从 A 列到 K 获取数据,但是如果 Column K = "TRUE" ,我只需要从 A 到 J 复制粘贴到特定的工作表,这可以用 For Each 代替吗?
'if line contains XE copy to XE sheet
raw1 = Worksheets("RAW").Cells(Rows.Count, 1).End(xlUp).Row
For i = 4 To raw1
If Worksheets("RAW").Cells(i, 11).Value = "True" Then
Worksheets("RAW").Rows(i).Copy
Worksheets("XE").Activate
raw2 = Worksheets("XE").Cells(Rows.Count, 1).End(xlUp).Row
Worksheets("XE").Cells(raw2 + 1, 1).Select
ActiveSheet.Paste
End If
谢谢你的帮助
【问题讨论】:
-
当涉及到嵌套的控制结构时,糟糕的缩进很容易导致令人沮丧的难以发现的编译器错误。试试Rubberduck's Smart Indenter(免责声明:我拥有这个网站并管理它的OSS项目)。请注意,它可能不适用于您提供的代码,因为
For块缺少其Next令牌。你能edit你的帖子包含整个For...Next块吗? -
为什么要使用
For Each循环来执行此操作?是否因为您在某处读到使用For Each循环迭代对象集合更快(这是真的)?请注意,使用Select和Activate可能会破坏您获得的任何收益。我在这里看到的主要问题是Select和Activate,而不是For...Next。