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

