根据价值改变颜色

我正在制作一个带有三个button的表单和一个小数据表格。 每个button将与可接受结果的不同范围相对应。 当你按下第一个button时,如果它们在38和44.4之间,我希望它将表格中的结果高亮显示为绿色,并以红色突出显示结果。 对于第二个button,我想要的范围是33到39.4,第三个button是33到39.4(相同的结果范围,不同的testingtypes)。 基本上我需要不同的条件格式与每个button制定。 我目前正在使用:

Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Range("C16") > 44.4 Then Target.Interior.Color = vbRed If Target.Range("C16") < 38 Then Target.Interior.Color = vbRed If Target.Range("C16") >= 38 And Target <= 44.4 Then Target.Interior.Color = vbGreen End Sub 

我不熟悉select更改属性,而这是行不通的。 不知道从哪里去。 任何帮助,将不胜感激。 谢谢!

44.4大于或等于38,无论其他条件的结果如何,检查它是否正在运行,这意味着任何大于或等于38的值将变为绿色。

您需要更好地指定您的条件,特别是“X和Y之间”部分。 这看起来像一个Select Case块的工作 – 例如,这将是“38和44.4之间的绿色”代码:

 Select Case ActiveSheet.Cells("C16").Value Case 38 To 44.4 Target.Interior.Color = vbGreen Case Else Target.Interior.Color = vbRed End Select 

“33和39.4之间的绿色”代码将如下所示:

 Select Case ActiveSheet.Cells("C16").Value Case 33 To 39.4 Target.Interior.Color = vbGreen Case Else Target.Interior.Color = vbRed End Select 

注意一个模式? 参数化并将其放入自己的过程中:

 Public Sub ConditionalHighlight(ByVal checkCell As Range, ByVal target As Range, ByVal lowerLimit As Double, ByVal upperLimit As Double) 'ensure the value is a Double (and not an error or a string): If VarType(checkCell.Value) <> vbDouble Then Exit Sub 'work with an actual Double instead of the Variant we get off the cell: Dim checkValue As Double checkValue = CDbl(checkCell.Value) Select Case checkValue Case lowerLimit To upperLimit target.Interior.Color = vbGreen Case Else target.Interior.Color = vbRed End Select End Sub 

现在只需从button的Click处理程序中调用:

 Private Sub Button1_Click() ConditionalHighlight Range("C16"), Range("whatever"), 38, 44.4 End Sub Private Sub Button2_Click() ConditionalHighlight Range("C16"), Range("whatever"), 33, 39.4 End Sub Private Sub Button3_Click() ConditionalHighlight Range("C16"), Range("whatever"), 42, 74.4 End Sub 

放一个button:

 Sub Button1() Dim myRange, cell As Range Set myRange = Range("C16:G16") For Each cell In myRange If cell.Value > 44.4 Then cell.Interior.Color = vbRed ElseIf cell.Value < 38 Then cell.Interior.Color = vbRed ElseIf cell.Value >= 38 And cell.Value <= 44.4 Then cell.Interior.Color = vbGreen End If Next End Sub