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

VBA批量设置行高代码报错“Object Required Error”求助

VBA代码“Object Required Error”错误排查与修复

错误根源

你的代码触发“Object Required Error”的核心原因是变量赋值逻辑错误:

  • 变量InputH被声明为Long(数值类型),但你用了Set关键字给它赋值。Set仅用于对象类型(比如Range、Workbook这类)的引用赋值,数值类型变量直接用等号=赋值即可,不需要Set。这行错误代码导致VBA认为你要给对象赋值,但InputH不是对象,因此抛出错误。
  • 原代码的错误跳转Leave:没有处理用户取消输入的场景,会导致后续代码执行异常。

修正后的代码

Sub RowHeight()
'
' RowHeight
' 批量设置选中行的行高
'

'变量声明
    Dim InputBAns As Range                   '选择目标行的输入框返回对象
    Dim InputH As Long
    
    On Error GoTo ErrorHandler
    '选择需要设置行高的行(参数8指定返回Range对象)
    Set InputBAns = Application.InputBox("请选择需要设置行高的行", "选择目标行", , , , , , 8)
    '输入行高数值(参数1指定返回数值类型)
    InputH = Application.InputBox("请输入需要设置的行高", "设置行高", 20, , , , , 1)
    
    '为选中行设置行高
    InputBAns.RowHeight = InputH
    Exit Sub '正常执行完成后退出,避免进入错误处理逻辑
    
ErrorHandler:
    '针对不同错误场景给出提示
    Select Case Err.Number
        Case 424 '用户取消选择目标行
            MsgBox "已取消操作", vbInformation
        Case 13 '输入非有效数值
            MsgBox "请输入合法的行高数值", vbExclamation
        Case Else '其他未知错误
            MsgBox "发生错误:" & Err.Description, vbCritical
    End Select
End Sub

关键修正说明

  • 移除InputH赋值语句前的Set关键字,直接用InputH = ...完成数值赋值
  • 添加Exit Sub确保正常执行流程不会进入错误处理分支
  • 完善错误处理逻辑,针对用户取消操作、输入非法值等场景给出明确提示,提升代码健壮性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 10:36:23