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

时间:2015-07-24 14:15:38

标签: vba excel-vba excel

我之前从未使用过vba(我的主要角色主要是以sql为基础),我非常认真地离开了我的深度,我想坐下来花几天实际学习这一切是如何工作的但是我现在没有几天,所以把自己放在你的怜悯之上!

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)

我一直在寻找每一个'形成一个初始循环,但我正在努力弄清楚如何指定在循环的每次迭代中要查看的其他范围中的哪些单元格。

任何帮助或建议表示赞赏

1 个答案:

答案 0 :(得分:1)

欢迎来到SE,L!你有一个良好的开端,你是对的,你正在寻找一个FOR..NEXT循环。诀窍是使用变量编辑Range,如下所示:

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