excel vba将一个范围与另一个范围进行比较

excel vba将一个范围与另一个范围进行比较,vba,excel,Vba,Excel,我以前从未使用过vba(我的主要角色主要是基于sql的),在这里我非常不了解vba,我想坐下来花几天时间来学习所有这些是如何工作的,但我现在没有时间,因此我只能听天由命了 Sub updateduration() If Worksheets("Sheet1").Range("I4").Value = "Y" Then Worksheets("Sheet1").Range("H4").Interior.ColorIndex = 43 Else If Worksheets("Sheet1")

我以前从未使用过vba(我的主要角色主要是基于sql的),在这里我非常不了解vba,我想坐下来花几天时间来学习所有这些是如何工作的,但我现在没有时间,因此我只能听天由命了

Sub updateduration()
If Worksheets("Sheet1").Range("I4").Value = "Y" Then
  Worksheets("Sheet1").Range("H4").Interior.ColorIndex = 43
Else
  If Worksheets("Sheet1").Range("J4").Value = 1 Then
    Worksheets("Sheet1").Range("H4").Interior.ColorIndex = 3
  Else
    If Worksheets("Sheet1").Range("J4").Value = 0 Then
      Worksheets("Sheet1").Range("H4").Interior.ColorIndex = 45
    End If
  End If
End If
End Sub
虽然它可能工作得很糟糕,但我现在正在尝试调整它,以便它逐个调整H4:H34范围内的所有单元格,对照等效单元格检查每个if语句(即范围I4:I34和范围J4:34)

我一直在寻找“for each”来形成一个初始循环,但我很难弄清楚如何指定在循环的每个迭代中查看其他范围中的哪些单元格

谢谢你的帮助或建议


欢迎来到SE,L!你有了一个好的开始,你是对的,下一个循环就是你要寻找的。诀窍是使用变量编辑范围,如下所示:

Sub updateduration()
Dim startRow As Integer, endRow As Integer
startRow = 4 'first row to compare/update
endRow = 34 'last row to compare/update

For myRow = startRow To endRow
  If Worksheets("Sheet1").Range("I" & myRow).Value = "Y" Then
    Worksheets("Sheet1").Range("H" & myRow).Interior.ColorIndex = 43
  Else
    If Worksheets("Sheet1").Range("J" & myRow).Value = 1 Then
      Worksheets("Sheet1").Range("H" & myRow).Interior.ColorIndex = 3
    Else
      If Worksheets("Sheet1").Range("J" & myRow).Value = 0 Then
        Worksheets("Sheet1").Range("H" & myRow).Interior.ColorIndex = 45
      End If
    End If
  End If
Next myRow
End Sub

范围是否“固定”?还是由用户选择?或者通过另一个过程传递?Excellant stuff,您提供了我理解中缺少的链接-“范围”(“J”和myRow)”。我不知道组合文本是多么简单&一个范围声明中的变量,我一直在尝试形成在每次迭代中更新自身的变量,但在多循环地狱中被弄糊涂了。非常感谢你这么快的回复,救了我一命!