首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Excel vba设置要在自动筛选后复制的动态范围

Excel vba设置要在自动筛选后复制的动态范围
EN

Stack Overflow用户
提问于 2019-11-04 10:55:48
回答 1查看 356关注 0票数 0

在根据参考号应用过滤器之后,我正在尝试用来自寄存器表("TK_Register")的数据更新表("EditEx")。行数不会超过20行。

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

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

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

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

代码语言:javascript
复制
    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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-04 13:11:45

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

代码语言:javascript
复制
Sheets("TK_Register").Range("A1").CurrentRegion.AutoFilter field:=12, Criteria1:=RefID 

还有这个:

代码语言:javascript
复制
DbExtract.Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).copy
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58686628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档