gpt4 book ai didi

vba - VBA-Countif错误 '438'

转载 作者:行者123 更新时间:2023-12-03 08:12:07 25 4
gpt4 key购买 nike

我正在尝试在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

最佳答案

有两个错误,每个错误都引发“38”错误:

.Selection.Delete Shift:=xlUp

因为 Selection不是Worksheet对象的有效属性
.FormulaR1C11 

只是一个错字,因为它应该是
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

    关于vba - VBA-Countif错误 '438',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36821059/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com