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

VBA声明Range变量时触发Object variable or with block variable not set错误问询

问题原因及解决方案

触发原因

  • VBA对值类型和对象类型的赋值规则有明确区分:值类型(字符串、数值、布尔值等)直接使用=赋值即可,而Range属于对象类型,必须搭配Set关键字完成赋值,否则就会抛出「Object variable or with block variable not set」错误。
  • 你删除变量声明行时,range_to_sum会被默认判定为Variant变体类型:此时你给它赋值的是地址字符串,变量会自动适配为字符串类型,后续求和等内置函数可以直接识别该地址字符串,因此不会报错。

修正方法

调整代码如下,即可保留Range类型声明的同时正常运行:

Dim range_to_sum As Range
' 对象赋值需加Set关键字,同时通过Range方法将地址字符串转为Range对象
Set range_to_sum = Range("D" & paste_failures_row & ":" & "D" & lrow_4)

后续执行求和运算时直接调用即可,示例:
Debug.Print Application.WorksheetFunction.Sum(range_to_sum)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:54:03