我正在使用以下代码创建一个数据列,我可以将其用作数据透视表中的过滤器。
代码有效,但它标记了“运行时错误'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 :(得分:2)
尽量避免使用.Select
或.Activate
。检查this和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
如果有帮助,请告诉我们。