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

问题描述 投票:0回答:2

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

对象变量或未设置块变量

这是代码:

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

非常感谢

excel vba autofilter
2个回答
0
投票

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

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

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


0
投票

试试以下

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
© www.soinside.com 2019 - 2024. All rights reserved.