【问题标题】:VBA Copy Paste Loop Not Executing CorrectlyVBA复制粘贴循环未正确执行
【发布时间】: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 只会复制可见行。

标签: vba excel


【解决方案1】:

您的代码依赖于ActiveSheet,您的所有对象(例如Set rng = Range("A1:CN" & LR)Range("U1:U" & LR).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=.Range("CO1"), Unique:=True)都不适用于工作表。

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

代码

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-20
    • 1970-01-01
    • 2019-12-27
    • 2015-12-02
    • 2019-01-23
    • 2020-08-10
    • 1970-01-01
    相关资源
    最近更新 更多