2014-03-24 211 views
0

我正在使用以下代碼來創建一列數據,我可以使用它作爲數據透視表中的過濾器。運行時錯誤'13':類型不匹配錯誤代碼

該代碼可以工作,但它會標記「運行時錯誤」13「:類型不匹配」代碼錯誤。任何人都可以幫助我更改代碼以消除錯誤消息。

這裏是我使用的代碼。

Sub negativepivot() 

     Sheets("owssvr").Select 
     Columns("W:W").Select 
     Selection.ClearContents 
     Range("W2").Select 
     ActiveCell.FormulaR1C1 = "=Table_owssvr[@[Count Zero]]" 
     Range("W2").Select 
     Selection.AutoFill Destination:=Range("W2:W230"), Type:=xlFillDefault 
     Range("W2:W230").Select 
     ActiveWindow.SmallScroll Down:=-230 
     Range("W1").Select 
     ActiveCell.FormulaR1C1 = "Negative results" 

    For Each Cell In Range("W2:W230") 
    If Cell.Value <= 0 Then 
    Cell.Value = "Negative" 
    Else 
    Cell.Value = Cell.Value 
    End If 
    Next 
    End Sub 
+0

哪一行在引發錯誤時突出顯示? – Manhattan

回答

2

避免使用.Select.Activate儘可能。對於其他方法和原因,請檢查this和​​。另外,在以前的鏈接中,請檢查With的使用情況。

您的代碼看起來編程正確,因此請嘗試改進整體樣式。 VBA在某種程度上很敏感。

Sub NegativePivotMod() 

    With Sheets("owssvr") 

     .Range("W:W").ClearContents 

     With .Range("W2") 
      .FormulaR1C1 = "=Table_owssvr[@[Count Zero]]" 
      .AutoFill Destination:=.Range("W2:W230"), Type:=xlFillDefault 
     End With 

     Range("W1").FormulaR1C1 = "Negative results" 

     For Each Cell In .Range("W2:W230") 
      If Cell.Value < 0 Then 
       Cell.Value = "Negative" 
      End If 
     Next 

    End With 

End Sub 

讓我們知道這是否有幫助。

+0

效果很好!謝謝! –

相關問題