2016-04-24 91 views
0

我想在VBA中執行COUNTIF,並且我得到了一些resom錯誤'438',我不知道爲什麼。VBA - Countif錯誤'438'

Option Explicit 

Sub tools() 
' 

With Worksheets("Plans") 
    .Range("a:ar").AutoFilter Field:=2, Criteria1:="=Cv", Operator:=xlOr, Criteria2:="=Se" 
    .rows("6:6").Select 
    .Range(Selection, Selection.End(xlDown)).Select 
    .Selection.Delete Shift:=xlUp 
    .ShowAllData 
    .Range("A2:A" & .Cells(rows.Count, "e").End(xlUp).Row).FormulaR1C11 = "=COUNTIF(c[5],RC[5])" 
    .Range("A2:a" & .Cells(rows.Count, "e").End(xlUp).Row) = Range("A2:a" & .Cells(rows.Count, "e").End(xlUp).Row).Value2 
End With 

End Sub 

回答

2

出現了兩個錯誤,每個投擲 '38' 錯誤:

.Selection.Delete Shift:=xlUp 

因爲Selection不是工作表對象的有效屬性

.FormulaR1C11 

只是一個錯字,因爲它應該be

FormulaR1C1 

除此之外,也有一些良好的編碼習慣,遵循這樣的:

  • 避免使用SelectSelection

    組,並使用直接引用對象(範圍),而不是

  • 的避免重複使用With關鍵字

    這將避免打字錯誤

  • 避免提及整列或行

    和限制的範圍是實際使用電池

    這特別是在使用的工作表的功能,如COUNTIF

所以這裏的修爲錯誤代碼以及上面提到的良好編碼習慣

Option Explicit 

Sub tools() 

With Worksheets("Plans") 
    .Range("a:ar").AutoFilter Field:=2, Criteria1:="=Cv", Operator:=xlOr, Criteria2:="=Se" 

    With .rows("6:6") 
     Range(.Cells, .End(xlDown)).Delete Shift:=xlUp 
    End With 

    .ShowAllData 

    With .Range("A2:A" & .Cells(rows.Count, "e").End(xlUp).Row) 
     .FormulaR1C1 = "=COUNTIF(R1C[5]:R" & .rows(.rows.Count).Row & "C[5],RC[5])" 
     .Value = .Value2 
    End With 
End With 

End Sub 
+0

工程很好,非常感謝。 –

+0

不用客氣 – user3598756