VBA代码,用于根据条件过滤数据并将数据传输到其他图纸

VBA代码,用于根据条件过滤数据并将数据传输到其他图纸,vba,excel,Vba,Excel,我试图通过比较PDF值=1.4和需要复制到Sheet1中的筛选数据来筛选I列中的数据,即PDF版本。 这里我得到的错误是运行时error-424对象必需的 Sub FilterMe() Dim sh As Worksheet, ws As Worksheet Dim LstR As Long, rng As Range Dim var As Variant Dim myWb As Excel.Workbook Set myWb = ActiveWork

我试图通过比较PDF值=1.4和需要复制到Sheet1中的筛选数据来筛选I列中的数据,即PDF版本。 这里我得到的错误是运行时error-424对象必需的

Sub FilterMe()

    Dim sh As Worksheet, ws As Worksheet
    Dim LstR As Long, rng As Range
    Dim var As Variant
    Dim myWb As Excel.Workbook

    Set myWb = ActiveWorkbook

    var = 1.4

    Sheets("Sheet1").Range("A1:L20").ClearContents

    Set sh = Sheets("DataSheet")    'set the sheet to filter
    Set ws = Sheets("Sheet1")    'set the sheet to paste

    Application.ScreenUpdating = False

    With sh    'do something with the sheet

        LstR = .Cells(.Rows.Count, "I").End(xlUp).Row    'find last row

        .Columns("I:I").AutoFilter Field:=9, Criteria1:=PDF.var 'ERROR coming here

        Set rng = .Range("A1:I" & LstR).SpecialCells(xlCellTypeVisible)    

        rng.Copy ws.Cells(ws.Rows.Count, "A").End(xlUp).Offset(1)
        .AutoFilterMode = False

    End With

End Sub

什么是准则1:=PDF.var

此外,在筛选单个列时,字段应始终为1

.Columns("I:I").AutoFilter Field:=1, Criteria1:=var

您可能希望对代码进行这种小小的(有注释的)重构:

Sub FilterMe()
    Dim sh As Worksheet, ws As Worksheet
    Dim var As Variant

    var = 1.4

    Set sh = Worksheets("DataSheet") 'set the sheet to filter
    Set ws = Worksheets("Sheet1") 'set the sheet to paste
    ws.Range("L1", ws.Cells(ws.Rows.Count, "A").End(xlUp)).ClearContents '<--| clear "paste" sheet columns A:L cells from row 1 down to column A last not empty one

    Application.ScreenUpdating = False

    With sh '<--| reference your "copy" sheet
        With .Range("I1", .Cells(.Rows.Count, "A").End(xlUp)) '<--| reference its columns A:L cells from row 1 down to column A last not empty cell
            .AutoFilter Field:=9, Criteria1:=var '<--| filter on referenced range 9th column with 'var'
            If Application.WorksheetFunction.Subtotal(103, .Cells) > 1 Then .SpecialCells(xlCellTypeVisible).Copy ws.Cells(ws.Rows.Count, "A").End(xlUp).Offset(1) '<--| if any cell filtered other than headers (which get always filtered) then copy filtered values to "paste" sheet
        End With
        .AutoFilterMode = False
    End With

    Application.ScreenUpdating = True
End Sub
Sub-FilterMe()
将sh设置为工作表,ws设置为工作表
作为变量的Dim-var
var=1.4
设置sh=工作表(“数据表”)'将工作表设置为筛选
设置ws=工作表(“Sheet1”)'将工作表设置为粘贴

ws.Range(“L1”,ws.Cells(ws.Rows.Count,“A”).End(xlUp)).ClearContents“在您正在使用的
PDF.var
错误行中,但您没有
PDF
对象。改用
Criteria1:=var
。@AdityaVarma,你通过了吗?