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

VBA For循环赋值异常:整列被最后单元格值覆盖求助

VBA代码错误分析与修复

你的问题出在每次循环都给整个C3:C11区域赋值,而不是只修改当前遍历单元格对应的C列同行单元格。

遍历B3到B11时,每一次循环都会把C3:C11的所有单元格改成当前B列单元格的计算值,循环到最后一个单元格B11时,整个C区域就会被B11的计算结果覆盖,这就是你看到最终整列都变成B11对应值的原因。

修正后的代码

Sub NewThing()
    Dim Cell As Range
    For Each Cell In Worksheets("Question 2").Range("B3:B11").Cells
        If Cell.Value >= 90000 Then
            ' 修改当前单元格同行的C列单元格
            Cell.Offset(0, 1).Value = Cell.Value * 1.5
        Else
            Cell.Offset(0, 1).Value = Cell.Value * 1.1
        End If
    Next Cell
End Sub

代码说明

  • Cell.Offset(0,1) 表示当前Cell向右偏移1列的单元格(也就是同一行的C列单元格),这样每次循环只会修改对应行的C列值,不会覆盖整个区域。
  • 也可以用Worksheets("Question 2").Cells(Cell.Row, "C").Value替代Cell.Offset(0,1).Value,效果完全一致,可根据个人习惯选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 06:42:38