根据其他 2 种单元格颜色更改单元格颜色
Change cell colour based on 2 other cell colours
我需要创建一个 VBA 公式,当我用其他颜色 手动 填充其他 2 个单元格时,它可以帮助我自动更改单元格的颜色。
这是一个例子:
由于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
我已经创建了颜色公式并且它可以工作,但我现在需要的是循环部分,如果可能的话,在我每次更改颜色时自动应用它。
这基于您在 post 中给出的排列,将其放入您希望此代码 运行 的工作表模块中,请注意它实际上会在每次更改时触发你在工作表上做了,而不仅仅是当你改变颜色时:
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
我需要创建一个 VBA 公式,当我用其他颜色 手动 填充其他 2 个单元格时,它可以帮助我自动更改单元格的颜色。
这是一个例子:
由于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
我已经创建了颜色公式并且它可以工作,但我现在需要的是循环部分,如果可能的话,在我每次更改颜色时自动应用它。
这基于您在 post 中给出的排列,将其放入您希望此代码 运行 的工作表模块中,请注意它实际上会在每次更改时触发你在工作表上做了,而不仅仅是当你改变颜色时:
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