如果elseif语句Excel VBA

在列AI中有目标产量,列BI中有实际产量,列C1中有两者之间的差值。 我只想循环遍历C列中的每一行,并根据战略桶标记每个值。 下面是我在进入主文档之前所尝试的示例代码。

我的问题是围绕如何执行循环中当前单元格的操作。 代码只是着色最后的单元格,而不是被评估的单元格。 有什么build议么?

Sub StratBuckets() Dim Delta As Variant Dim n As Integer n = 0 For n = 0 To 15 ' works up to this point --> points to the right value Delta = Worksheets("Test").Range("A1:Z1000").Find("Start Date").Offset(n, 3).Value If Delta > 0 And Delta <= 10 Then ActiveCell.Interior.Color = vbYellow ElseIf Delta > 10 Then ActiveCell.Interior.Color = vbGreen ElseIf Delta < 0 Then ActiveCell.Interior.Color = vbRed Else End If Next n End Sub 

你需要在右边的单元格上应用.Interior.Color

如果Worksheets("Test").Range("A1:Z1000").Find("Start Date").Offset(n, 3)是要着色的单元格,则执行:

 Worksheets("Test").Range("A1:Z1000").Find("Start Date").Offset(n, 3).Interior.Color = ... 

另一种方法是将DeltaRng范围DeltaRngFind with:

Worksheets("Test").Range("A1:Z1000").Find("Start Date")

那么如果Find成功,则获取Delta = DeltaRng.Offset(n, 3).Value右边的Delta值3列。

最后,当你在If Delta > 0 And Delta <= 10 Then等内部时,可以用DeltaRng.Offset(n, 3).Interior.Color = vbYellow修改单元格的DeltaRng.Offset(n, 3).Interior.Color = vbYellow

 Sub StratBuckets() Dim DeltaRng As Range Dim Delta As Variant Dim n As Long For n = 0 To 15 ' works up to this point --> points to the right value Set DeltaRng = Worksheets("Test").Range("A1:Z1000").Find("Start Date") '.Offset(n, 3).Value If Not DeltaRng Is Nothing Then '<--make sure Find was successful Delta = DeltaRng.Offset(n, 3).Value '<-- find the Delta value 3 columns to the right If Delta > 0 And Delta <= 10 Then DeltaRng.Offset(n, 3).Interior.Color = vbYellow ElseIf Delta > 10 Then DeltaRng.Offset(n, 3).Interior.Color = vbGreen ElseIf Delta < 0 Then DeltaRng.Offset(n, 3).Interior.Color = vbRed End If End If Next n End Sub