You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel VBA写入COUNTIF公式报错问题求助

问题解决:Excel VBA写入COUNTIF公式触发错误

针对你遇到的AddPlacedFormula宏写入公式报错、写入普通值正常的问题,可从以下几个方向排查解决:

1. 修正公式字符串的语法错误

检查公式字符串的转义写法,VBA中字符串内的双引号需要用两个双引号转义,你原代码里的公式末尾多了一个双引号,导致语法错误。正确写法应为:

WS.Range("J1").Formula = "=COUNTIF(O9:O67, ""Placed"")"

或FormulaR1C1版本:

WS.Range("J1").FormulaR1C1 = "=COUNTIF(R[8]C[5]:R[66]C[5], ""Placed"")"

2. 关闭事件触发避免循环调用

写入公式会触发Worksheet_Calculate事件,导致宏被反复调用进而触发错误。在写入公式前后临时关闭并重新启用事件:

Sub AddPlacedFormula()
    Dim WS As Worksheet
    Set WS = ThisWorkbook.Sheets("Sheet1") ' 或用Set WS = Sheet1(工作表代码名称,更稳定)
    
    Application.EnableEvents = False ' 临时关闭事件触发
    WS.Range("J1").Formula = "=COUNTIF(O9:O67, ""Placed"")"
    Application.EnableEvents = True ' 恢复事件触发
End Sub

3. 确保工作表引用准确

优先使用工作表的代码名称(在VBA编辑器属性窗口查看,默认如Sheet1)而非显示名称,避免因工作表重名或修改名称导致引用失效:

Set WS = Sheet1 ' 比Set WS = ThisWorkbook.Sheets("Sheet1")更可靠

4. 加入错误捕获定位具体问题

如果仍报错,添加错误捕获代码查看具体错误信息,便于精准排查:

Sub AddPlacedFormula()
    On Error GoTo ErrHandler
    Dim WS As Worksheet
    Set WS = Sheet1
    
    Application.EnableEvents = False
    WS.Range("J1").Formula = "=COUNTIF(O9:O67, ""Placed"")"
ExitSub:
    Application.EnableEvents = True
    Exit Sub
ErrHandler:
    MsgBox "错误代码:" & Err.Number & vbCrLf & "错误描述:" & Err.Description
    Resume ExitSub
End Sub

内容的提问来源于stack exchange,提问作者MattTT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 12:42:46