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

如何正确执行IF-THEN语句?VBA运行报Object Required错误求助

VBA中IF-THEN语句的正确用法
  • 基础单条件执行
    若只需在条件满足时执行单条语句,可直接简写:
    If Range("A1").Value = "完成" Then MsgBox "任务已完成"
    
    要是需要执行多条语句,必须用End If闭合逻辑块:
    If Range("A1").Value = "完成" Then
        MsgBox "任务已完成"
        Range("A1").Font.Bold = True
    End If
    
  • 分支判断(带Else)
    当条件不满足时需要执行另一套逻辑,用Else分支实现:
    If Range("A1").Value >= 60 Then
        MsgBox "及格"
    Else
        MsgBox "不及格"
    End If
    
  • 多条件嵌套
    可在IF/Else块内嵌套其他IF-THEN结构,注意每个If必须对应一个End If:
    If Range("A1").Value >= 60 Then
        If Range("A1").Value >= 90 Then
            MsgBox "优秀"
        Else
            MsgBox "良好"
        End If
    Else
        MsgBox "不及格"
    End If
    
你的CountOccurances模块错误修复

错误原因

你代码里用的[13,Column]这种方括号引用方式,仅支持常量索引,当用变量(比如Column、Row)作为索引时,VBA无法解析为有效单元格对象,因此抛出"Object Required"错误。同时代码还存在计数逻辑失效的问题。

修复后的代码

Sub CountOccurances()
    Dim Total As Integer
    Dim col As Integer ' 避免用VBA关键字Column作变量名
    Dim rw As Integer ' 避免用VBA关键字Row作变量名

    Total = 0
    For col = 2 To 51
        ' 用Cells(行号,列号)正确引用带变量索引的单元格
        If Worksheets("Sheet1").Cells(13, col).Value = 1 Then
            For rw = 12 To 16
                If Worksheets("Sheet1").Cells(rw, col).Value = 2 Then
                    Total = Total + 1 ' 累加符合条件的次数
                    ' 赋值到目标单元格
                    Worksheets("Sheet1").Cells(20, rw + 8).Value = Total
                End If
            Next rw
        End If
    Next col
End Sub

关键修改点

  1. 替换单元格引用方式:用Cells(行,列)替代方括号写法,支持变量作为索引,解决对象引用错误
  2. 修正计数逻辑:原代码仅写Total +1但未更新Total变量,导致计数始终为1,现在添加Total = Total +1实现累加
  3. 重命名变量:避免使用VBA内置关键字Column、Row作为变量名,减少潜在冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 18:35:15