VBA使用自动筛选器将值复制到另一个工作表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBA使用自动筛选器将值复制到另一个工作表相关的知识,希望对你有一定的参考价值。

我想通过创建新的工作簿将当前工作表中的值复制到另一个具有自动过滤器的工作簿,一旦我运行代码我得到了错误:

对象变量或未设置块变量

这是代码:

Sub copyvaluetoanothersheet()
Dim selectrange As Range
Dim wb As Workbook
Dim Dsheet As Worksheet
Dim Lastrow As Long

Application.ScreenUpdating = False

Set wb = Workbooks.Add

Set Dsheet = wb.Worksheets(1)

    Lastrow = Sheet2.Range("A" & Rows.Count).End(xlUp).Row

    selectrange = Sheet2.Range("A2:BP" & Lastrow)

    With Worksheets("Production data")
    .AutoFilterMode = False
    selectrange.AutoFilter field:="Branch", Criteria1:="Direct Response"
    selectrange.SpecialCells(xlCellTypeVisible).EntireRow.Copy

End With
    Dsheet.PasteSpecial xlPasteValues

Application.ScreenUpdating = True

End Sub

非常感谢

答案

在分配对象变量时你必须使用Set(你已经在别处完成了)。

Set selectrange = Sheet2.Range("A2:BP" & Lastrow)

另请注意,表单代码名称,选项卡名称和索引的混合令人困惑,如果看不到任何内容,则代码将会出错。

另一答案

试试以下

Sub cpVisible()
Dim MyProdName As String
Dim FilteredRange As Range
Dim myArr As Variant

    Sheets("Production Data").Range("$A$2:$BP$50000").AutoFilter Field:="Branch", Criteria1:="Direct Response"
    Set FilteredRange = Sheets("Production Data").Range("$A$2:$BP$50000").SpecialCells(xlCellTypeVisible)
    FilteredRange.Copy Sheets("Dsheet").Range("A1")

End Sub

以上是关于VBA使用自动筛选器将值复制到另一个工作表的主要内容,如果未能解决你的问题,请参考以下文章

使用VBA将值从一个表粘贴到另一个表

vba怎么复制指定内容到指定工作表?

VBA - 仅将可见单元格从工作表复制到另一个工作表

将一个工作簿中的工作表中的VBA代码复制到另一个工作簿?

VBA代码将值从一个单元格复制到特定列

VBA 如何批量将单元格复制到另一个工作表中