如何阻止 for 循环出错

问题描述 投票:0回答:1
Sub NewThing()

Dim Cell As Range

For Each Cell In Worksheets("Question 2").Range("B3:B11").Cells

    If Cell.Value >= 90000 Then
    
        Range("C3:C11").Value = Cell.Value * 1.5
    Else
        Range("C3:C11").Value = Cell.Value * 1.1
    
    End If

Next Cell

End Sub

当我进入 vba 编辑器时,我可以看到 C3:C11 中的值循环,我做错了什么?它从 B11 中获取最后一个值并将其用于整个列。请帮忙。

excel vba for-loop coding-style
1个回答
0
投票

这里的问题是,您在每次迭代中使用单个值设置整个范围

C3:C11
,而不是在循环中设置相应单元格的值。

您应该更新 C 列中的对应单元格,而不是更新整个范围。您可以使用

Offset
方法或显式引用 C 列中的单元格来修复此问题。

Sub NewThing()

    Dim Cell As Range

    For Each Cell In Worksheets("Question 2").Range("B3:B11").Cells

        If Cell.Value >= 90000 Then
            ' Update the corresponding cell in column C using Offset
            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
© www.soinside.com 2019 - 2024. All rights reserved.