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
相关产品推荐
相关产品推荐

