VBA复制粘贴循环不正确执行

我有一段VBA复制粘贴循环的代码,我已经使用了一年半,没有任何问题突然没有正确执行。 目的是采取具有一些独特值的特定列,并将这些filter复制粘贴到采用唯一值名称的新工作表中。 现在突然出现这个过滤部分的问题 – 当我运行macros时,它没有任何错误地执行,但是完全无法实际复制和粘贴任何东西或创build任何新的工作表。 发生的一件事就是将唯一值复制到CO列中,但由于某些原因,后续循环无法正常工作。

据我所知,在我的代码中没有无意中的改变,或者我在运行这个(每天,dynamic范围)的报告的格式上,所以我真的很难忽略突然之间可能会有所不同。

具体来说,要复制的值的范围是A1:CN,具有dynamic行数,并且具有要过滤的唯一值的列是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 

您正在依赖ActiveSheet所有代码,例如Set rng = Range("A1:CN" & LR)Range("U1:U" & LR).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=.Range("CO1"), Unique:=True不符合工作表限定。

您需要在代码的开头添加一个With Worksheets("Sheet1")语句,然后用a来限定所有的嵌套对象. ,它应该工作正常。

 With Worksheets("Shee1") ' <-- you need this line, modify to your sheet's name 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(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 End With 

所以 – 我closures了所有的Excel表单并重新打开后,它自己解决了。 但是现在我很好奇,如果有人知道为什么这可能发生了? 如果Excel内存不足,是否有代码截断的问题?