【问题标题】:Excel vba Set a dynamic range to copy after auto filterExcel vba设置自动过滤后要复制的动态范围
【发布时间】:2020-02-29 08:50:11
【问题描述】:

在根据参考号应用过滤器后,我正在尝试使用注册表单(“TK_Register”)中的数据更新工作表(“EditEx”)。不会超过 20 行。

我的问题与复制和粘贴有关。

如果要复制的数据位于前 20 行,它会复制并粘贴数据,但还会复制空白行直到第 21 行(在我的 DBExtract 范围中设置)。

如果要复制的数据在前 20 行之后,我会收到 1004 错误。过滤器确实发现有数据,但是我的复制代码只查看前 20 行。

如何让复制过滤的行动态工作而不复制空白行(如果我将复制范围设置为“A:K”也会发生这种情况)? 谢谢

    Sub UpdateInputWithExisting()

    ActiveCell.Offset(0, 1).Select
    Set RefID = ActiveCell

    Sheets("TK_Register").Range("A1:N1000").AutoFilter field:=12, Criteria1:=RefID

    Dim DbExtract, DuplicateRecords As Worksheet
    Set DbExtract = ThisWorkbook.Sheets("TK_Register")
    Set DuplicateRecords = ThisWorkbook.Sheets("EditEx")

    DbExtract.Range("A2:K21").SpecialCells(xlCellTypeVisible).copy
    DuplicateRecords.Cells(32, 3).PasteSpecial xlPasteValues
    On Error Resume Next
    Sheets("TK_Register").ShowAllData
    On Error GoTo 0

    ActiveWorkbook.RefreshAll
    Sheets("EditEx").Select
    Range("B13").Select

    MsgBox ("Record Retrieved. Make your changes and ensure you click 'Save Changes' to update the Master Registers")

    End Sub

【问题讨论】:

    标签: excel vba filter copy


    【解决方案1】:

    我建议您将以下两行更改为(假设您的工作表没有任何与表格相邻的数据):

    Sheets("TK_Register").Range("A1").CurrentRegion.AutoFilter field:=12, Criteria1:=RefID 
    

    还有这个:

    DbExtract.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).copy
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-16
      • 1970-01-01
      • 2019-03-29
      • 1970-01-01
      相关资源
      最近更新 更多