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使用自动筛选器将值复制到另一个工作表的主要内容,如果未能解决你的问题,请参考以下文章