2017-04-04 61 views
0

我试图通过比较PDF值= 1.4和过滤器数据需要复制到工作表Sheet1中的I列即PDF版本中筛选数据。 在这里,我得到错误的运行时错误424对象所需VBA代码来过滤数据和传输数据到其他工作表基于标准

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 
+0

在错误行你正在使用'PDF.var',但你没有'PDF'对象。改为使用'Criteria1:= var'。 – user2190035

回答

0

什么是标准1:= PDF.var?

也同时过滤一列,该字段应该始终为1

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

你可能要采取你的代码的这个小(评论)重构:

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 
+0

@AdityaVarma,你通过它了吗? – user3598756

+0

谢谢。它的工作 –

+0

不客气,你可能想标记答案为接受。谢谢你 – user3598756

相关问题