【发布时间】:2017-10-25 20:54:17
【问题描述】:
我有一段用于 VBA 复制粘贴循环的代码,我已经使用了一年半,没有出现任何突然无法正确执行的问题。目的是获取具有一些唯一值的特定列,并将这些过滤器复制粘贴到采用唯一值名称的新工作表中。现在突然出现过滤部分的问题 - 当我运行宏时,它执行时没有任何错误,但完全无法实际复制和粘贴任何内容或创建任何新工作表。确实发生的一件事是将唯一值复制到 CO 列中,但随后的循环由于某种原因无法正常工作。
据我所知,我的代码或运行它的报告的格式(每日动态范围)没有任何无意的更改,所以我真的很难过所有可能的不同之处突然。
具体来说,要复制的值范围是 A1:CN,行数是动态的,要过滤的唯一值的列是 U。知道为什么它可能不起作用吗?
Dim rng as Range
Dim c As Range
Dim LR As Long
LR = Cells(Rows.Count, "A").End(xlUp).Row
Set rng = Range("A1:CN" & LR)
Range("U1:U" & LR).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("CO1"), Unique:=True
For Each c In Range([CO2], Cells(Rows.Count, "CO").End(xlUp))
With rng
.AutoFilter
.AutoFilter Field:=21, Criteria1:=c.Value
.SpecialCells(xlCellTypeVisible).Copy
Sheets.Add(After:=Sheets(Sheets.Count)).Name = c.Value
ActiveSheet.Paste
End With
Next c
【问题讨论】:
-
我认为对于初学者来说,您应该添加一个工作表引用,因为当您添加一个新工作表时,它会成为活动工作表,并且默认情况下代码将引用该工作表。
-
您使用的是哪个版本的 Excel?我在使用 Excel 2010 时遇到过此类问题。
-
仅供参考:
.SpecialCells(xlCellTypeVisible)不需要。.Copy只会复制可见行。