Excel formula that prints cell color (ColorIndex or RGB)

后端 未结 3 838
没有蜡笔的小新
没有蜡笔的小新 2020-12-18 12:30

Is there, in Excel, a Formula that retrieve the ColorIndex (or RGB) of a cell?

I found the follwing function:

CELL(info_type, the_cell)
3条回答
  •  粉色の甜心
    2020-12-18 12:55

    please try with below

    Changes made : see the comment in code

    Module

    Public Function Performance_Message(NonPreferredAvg As Single _
                                      , NonPreferredAvgname As String _
                                      , PreferredAvg As Single _
                                      , PreferredAvgname As String _
                                      , Optional Outputtype As String _
                                       ) As Variant
    
        Dim performancemessage As String
        Dim averagedifference As Single
        Dim stravgdif As String
        Dim cellcolor As String
    
        averagedifference = Abs(NonPreferredAvg - PreferredAvg)
        stravgdif = FormatPercent(averagedifference, 2)
    
        Select Case PreferredAvg
            Case Is < NonPreferredAvg
                performancemessage = PreferredAvgname & " Is " & stravgdif & " Less Than " & NonPreferredAvgname
                cellcolor = 4 '"green" 'Changes made
    
            Case Is = NonPreferredAvg
                performancemessage = PreferredAvgname & " Equals " & NonPreferredAvgname
                cellcolor = 6 '"yellow" ''Changes made
    
            Case Is > NonPreferredAvg
                performancemessage = PreferredAvgname & " Is " & stravgdif & " Greater Than " & NonPreferredAvgname
                cellcolor = 5 '"blue" 'Changes made
            Case Else
                performancemessage = "Something Bad Happened"
        End Select
        If Outputtype = "color" Then
            Performance_Message = cellcolor
        Else
            Performance_Message = performancemessage
        End If
    End Function
    

    Worksheet

    Private Sub Worksheet_Change(ByVal Target As Range)
      Dim myColor As Double
      myColor = Target.Value ''Changes made
      Call SetPerformancecolor(Target, myColor)
    End Sub
    
    Private Sub SetPerformancecolor(Target As Range, myColor As Double)
      Target.Interior.ColorIndex = myColor ''Changes made
    End Sub
    

提交回复
热议问题