2015-04-17 30 views
1

下面的代碼工作,並更改北進入時的偏移單元格,我也想讓它改變,如果它的南,西或東,但我似乎可以找到一種方法來添加此。VBA多個IF值

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim KeyCells As Range 


Set KeyCells = Range("A7:A26") 
Set rng = Range("A7:A26") 

If Not Application.Intersect(KeyCells, Range(Target.Address)) _ 
     Is Nothing Then 

    For Each cell In rng.Cells 
     If cell.Value = "North" Then 
      cell.Offset(0, 1).Interior.Color = RGB(0, 255, 0) 
      cell.Offset(0, 2).Interior.Color = RGB(0, 255, 0) 
      cell.Offset(0, 3).Interior.Color = RGB(0, 255, 0) 
     End If 
    Next 

    End If 


End Sub 
+0

你想對每個方向使用相同的顏色或不同的顏色嗎? –

回答

1

給這個一杆。根據需要更新顏色分配:

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim KeyCells As Range 

Set KeyCells = Range("A7:A26") 
Set rng = Range("A7:A26") 

If Not Application.Intersect(KeyCells, Range(Target.Address)) _ 
    Is Nothing Then 
    For Each cell In rng.Cells 
     If cell.Value = "North" Then 
      cell.Offset(0, 1).Interior.Color = RGB(0, 255, 0) 
      cell.Offset(0, 2).Interior.Color = RGB(0, 255, 0) 
      cell.Offset(0, 3).Interior.Color = RGB(0, 255, 0) 
     ElseIf cell.Value = "South" Then 
      cell.Offset(0, 1).Interior.Color = RGB(255, 0, 0) 
      cell.Offset(0, 2).Interior.Color = RGB(255, 0, 0) 
      cell.Offset(0, 3).Interior.Color = RGB(255, 0, 0) 
     ElseIf cell.Value = "East" Then 
      cell.Offset(0, 1).Interior.Color = RGB(0, 0, 255) 
      cell.Offset(0, 2).Interior.Color = RGB(0, 0, 255) 
      cell.Offset(0, 3).Interior.Color = RGB(0, 0, 255) 
     ElseIf cell.Value = "West" Then 
      cell.Offset(0, 1).Interior.Color = RGB(0, 255, 255) 
      cell.Offset(0, 2).Interior.Color = RGB(0, 255, 255) 
      cell.Offset(0, 3).Interior.Color = RGB(0, 255, 255) 
     End If 
    Next 
End If 
End Sub 
+0

完美的作品!謝謝。 – Kaz

0

考慮:

If cell.Value = "North" Or cell.Value = "South" Then 
     cell.Offset(0, 1).Interior.Color = RGB(0, 255, 0) 
     cell.Offset(0, 2).Interior.Color = RGB(0, 255, 0) 
     cell.Offset(0, 3).Interior.Color = RGB(0, 255, 0) 
End If 

或:

If cell.Value = "North" Then 
     cell.Offset(0, 1).Interior.Color = RGB(0, 255, 0) 
     cell.Offset(0, 2).Interior.Color = RGB(0, 255, 0) 
     cell.Offset(0, 3).Interior.Color = RGB(0, 255, 0) 
ElseIf cell.Value = "South" 
     cell.Offset(0, 1).Interior.Color = RGB(0, 0, 255) 
     cell.Offset(0, 2).Interior.Color = RGB(0, 0, 255) 
     cell.Offset(0, 3).Interior.Color = RGB(0, 0, 255) 
End If 
2

嘗試使用Select Case而不是If語句。

For Each cell In Rng.Cells 
    Select Case cell.Value 
     Case "North" 
      Range(cell.Offset(0, 1), cell.Offset(0, 3)).Interior.Color = RGB(0, 255, 0) 
     Case "South" 
      Range(cell.Offset(0, 1), cell.Offset(0, 3)).Interior.Color = RGB(0, 155, 0) 
     Case "East" 
      Range(cell.Offset(0, 1), cell.Offset(0, 3)).Interior.Color = RGB(0, 55, 0) 
     Case "West" 
      Range(cell.Offset(0, 1), cell.Offset(0, 3)).Interior.Color = RGB(0, 0, 0) 
    End Select 
Next 
+0

從未使用過Select Case之前,我會看看它。謝謝! – Kaz

+0

Select Case經常被新程序員忽略,但它可以使代碼更容易遵循和理解。請享用! –

+0

[Select ... Case Statement(Visual Basic)](https://msdn.microsoft.com/en-us/library/cy37t14y.aspx) –