根据其他 2 种单元格颜色更改单元格颜色

时间:2021-04-18 14:49:31

标签: excel vba cell

我需要创建一个 VBA 公式,当我用其他颜色手动填充其他 2 个单元格时,它可以帮助我自动更改单元格的颜色。

这是一个例子:

enter image description here

由于手动填写单元格K和M,我需要单元格Q在第一行自动填充为绿色。

第二个也一样:如果我用黄色填充K+用绿色填充M,那么Q的结果一定是它被绿色填充。

这可能吗?如果你能给出前两个条件的例子,我自己构建以下条件就足够了。

这是我的代码:

Sub RatingColor()
    If range("F13").Interior.Color = RGB(146, 208, 80) And range("H13").Interior.Color = RGB(146, 208, 80) Then
     range("J13").Interior.Color = RGB(146, 208, 80)
     ElseIf range("F13").Interior.Color = RGB(255, 255, 0) And range("H13").Interior.Color = RGB(146, 208, 80) Then
     range("J13").Interior.Color = RGB(146, 208, 80)
     
     ElseIf range("F13").Interior.Color = RGB(255, 192, 0) And range("H13").Interior.Color = RGB(146, 208, 80) Then
     range("J13").Interior.Color = RGB(255, 255, 0)
     ElseIf range("F13").Interior.Color = RGB(255, 255, 0) And range("H13").Interior.Color = RGB(255, 255, 0) Then
     range("J13").Interior.Color = RGB(255, 255, 0)
     ElseIf range("F13").Interior.Color = RGB(146, 208, 80) And range("H13").Interior.Color = RGB(255, 255, 0) Then
     range("J13").Interior.Color = RGB(255, 255, 0)
     
     ElseIf range("F13").Interior.Color = RGB(255, 192, 0) And range("H13").Interior.Color = RGB(255, 255, 0) Then
     range("J13").Interior.Color = RGB(255, 192, 0)
     ElseIf range("F13").Interior.Color = RGB(146, 208, 80) And range("H13").Interior.Color = RGB(255, 192, 0) Then
     range("J13").Interior.Color = RGB(255, 192, 0)
     ElseIf range("F13").Interior.Color = RGB(255, 255, 0) And range("H13").Interior.Color = RGB(255, 192, 0) Then
     range("J13").Interior.Color = RGB(255, 192, 0)
     
     ElseIf range("F13").Interior.Color = RGB(255, 192, 0) And range("H13").Interior.Color = RGB(255, 192, 0) Then
     range("J13").Interior.Color = RGB(255, 0, 0)
     ElseIf range("F13").Interior.Color = RGB(146, 208, 80) And range("H13").Interior.Color = RGB(255, 0, 0) Then
     range("J13").Interior.Color = RGB(255, 0, 0)
    End If
End Sub

我已经创建了颜色公式并且它有效,但我现在需要的是循环部分,如果可能,每次更改颜色时自动应用它。

1 个答案:

答案 0 :(得分:1)

这是基于您在帖子中给出的排列,将其放入您希望此代码运行的工作表模块中,请注意它实际上会在您在工作表上所做的每一次更改时触发,而不仅仅是在您改变颜色:

Private Sub Worksheet_Change(ByVal Target As Range)
        Dim colorGreen As Long
        Dim colorYellow As Long
        Dim colorOrange As Long
        Dim colorRed As Long
        Dim i As Long
        
        Const rowStart As Long = 2 'first row, change to your purpose
        Const rowEnd As Long = 20 'last row, change to your purpose
        
        'Define color to variables
        colorGreen = RGB(146, 208, 80)
        colorYellow = RGB(255, 255, 0)
        colorOrange = RGB(255, 192, 0)
        colorRed = RGB(255, 0, 0)
        
        With Sheet1 'change to correct worksheet reference
            For i = rowStart To rowEnd
                Select Case .Cells(i, 6).Interior.color 'Check cell color in Column F
                    Case colorGreen
                        Select Case .Cells(i, 8).Interior.color 'Check cell color in column H
                            Case colorGreen, colorYellow, colorOrange, colorRed: .Cells(i, 10).Interior.color = .Cells(i, 8).Interior.color
                        End Select
                    Case colorYellow
                        Select Case .Cells(i, 8).Interior.color 'Check cell color in column H
                            Case colorGreen, colorYellow, colorOrange
                                .Cells(i, 10).Interior.color = .Cells(i, 8).Interior.color
                        End Select
                    Case colorOrange
                        Select Case .Cells(i, 8).Interior.color 'Check cell color in column H
                            Case colorGreen
                                .Cells(i, 10).Interior.color = colorYellow
                            Case colorYellow
                                .Cells(i, 10).Interior.color = colorOrange
                            Case colorOrange
                                .Cells(i, 10).Interior.color = colorRed
                        End Select
                End Select
            Next i
        End With
End Sub

enter image description here