2016-01-20 51 views
0

我需要在工作簿中的一個工作表上發生兩個操作。兩者都基於變化事件,但不知道如何使它們都起作用。下面是我的代碼:合併兩個Worksheet_Change Subs

Private Sub Worksheet_Change(ByVal Target As Range) 

Dim r As Range 
Set r = Target.EntireRow 

    If Target.row = 1 Then Exit Sub ' Don't change header color 

    If r.Cells(1, "AD").Value <> "" Then 
     r.Font.Color = RGB(0, 176, 80) 
    Else 
     r.Font.ColorIndex = 1 
    End If 
End Sub 

這一個:

Private Sub Worksheet_Change(ByVal Target As Range) 

Dim r As Range 
Set r = Target.EntireRow 

    If Target.row = 1 Then Exit Sub ' Don't change header color 

    If r.Cells(1, "E").Value = "6" Then 
     r.Font.Color = RGB(255, 0, 0) 
    Else 
     r.Font.ColorIndex = 1 
    End If 
End Sub 

爲了幫助確定最佳的操作過程中,這裏是最終的結果一定是:

對於任何行輸入單元格AD中的日期,整行的文本顏色應變爲綠色。但是,如果任何行的單元格E包含6(這是一個格式爲文本的數字),那麼該行中的文本應該是紅色的。

我確定我在想這個。所有的建議表示讚賞。

回答

1

在您的第一條If語句中使用And,並添加一條ElseIf語句。

我不完全確定如果日期和6都存在或者如果沒有其他日期時您想要優先考慮什麼,但是您可以輕鬆調整下面的If Then ElseIf塊來整理您的需求。

If r.Cells(1, "AD").Value <> "" And r.cells(1,"E").Value = "6" Then 
    r.Font.Color = RGB(255, 0, 0) 
ElseIf r.Cells(1,"AD").Value <> "" Then 
    r.Font.Color = RGB(0, 176, 80) 
Else 
    r.Font.ColorIndex = 1 
End If 
+1

這幫了很大忙。但是,我必須做一些小的調整才能使其按需要工作。我刪除了'r.Cells(1,「AD」)。Value <>「」And'從第一行開始,並且將「6」改爲了6.我在OP中沒有提及應該優先考慮什麼,I爲此道歉。 –

+0

@IronMan - 我懷疑只要有你需要的結構就會把你帶回家:)很高興你能解決問題。 –