Excel VBA两种变量赋值方式运行结果不一致的问题咨询
VBA两条语句执行效果差异原因解答
- 两条语句的赋值目标完全不同,是效果不一致的核心原因:
- 第一条语句
If myValue > 400 Then Range("F" & i).Value = myValue + 10的赋值对象是工作表中F列第i行的单元格存储区域,计算结果直接写入了单元格,所以工作表上的数值会同步更新。 - 第二条语句
If myValue > 400 Then myValue = myValue + 10的赋值对象是VBA运行时的内存临时变量myValue,该变量和工作表单元格没有默认的自动绑定关系,修改它的数值只会更新内存中的临时存储值,没有触发任何写入单元格的操作,因此工作表的数值不会变化。
- 第一条语句
- 本地窗口可以看到
myValue数值变化是正常的:本地窗口的作用就是实时展示VBA运行过程中所有内存变量的当前值,和单元格是否更新无关。 - 代码没有报错是因为第二条语句本身语法完全合法,仅逻辑上未实现写入单元格的需求,不属于VBA的语法/运行错误范畴。
如果你需要在修改myValue后同步更新单元格,补充回写语句即可,示例如下:
If myValue > 400 Then myValue = myValue + 10 Range("F" & i).Value = myValue ' 新增回写语句,将变量新值写入单元格 End If
内容的提问来源于stack exchange,提问作者bestmbaman
相关产品推荐
相关产品推荐

