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

Excel VBA中Evaluate函数问题:返回全零值

问题原因与解决方法

你遇到的问题核心是Evaluate方法的默认作用域是当前活动工作表,而非你指定的res工作表:

  • 宏正常运行时,如果res不是当前活动表,Evaluate(rngData.Address & "*2")会在活动工作表中查找对应地址的区域。若活动表该区域为空,计算结果就是0,赋值给rngData后自然全是零。
  • 断点后你大概率会切换到res工作表查看,此时活动表变为res,Evaluate能正确读取目标区域的数据,计算结果就正常了。

解决方法

直接使用目标工作表的Evaluate方法,明确指定计算上下文:

Set rngData = res.Range("A5:C" & last_row)
rngData = res.Evaluate(rngData.Address & "*2")

更简洁高效的写法(无需先定义rngData再拼接地址):

res.Range("A5:C" & last_row) = res.Evaluate("A5:C" & last_row & "*2")

另外需确认last_row是基于res工作表计算的,比如:

last_row = res.Cells(res.Rows.Count, "A").End(xlUp).Row

避免因活动表不同导致last_row取值错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 17:31:07