2017-04-04 71 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