【发布时间】:2026-02-17 23:35:02
【问题描述】:
我正在制作一个带有三个按钮的表单和一个小的数据电子表格。每个按钮将对应不同范围的可接受结果。当您按下第一个按钮时,我希望它将工作表中的结果突出显示为绿色(如果它们介于 38 和 44.4 之间),并将超出该范围的结果突出显示为红色。对于第二个按钮,我希望好的范围是 33 到 39.4,第三个按钮是 33 到 39.4(可接受的结果范围相同,测试类型不同)。基本上我需要为每个按钮制定不同的条件格式。我目前正在使用:
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
我不熟悉选择更改属性,这无论如何都不起作用。不知道从这里去哪里。任何帮助,将不胜感激。谢谢!
【问题讨论】:
-
SelectionChange 不是属性,而是
Worksheet事件。Worksheet_SelectionChangehandles 当它被引发/触发时:它是一个 event handler 过程。旁注,事件处理程序应该是Private,你的隐式是Public。 -
@Mat'sMug - 如果 Worksheet_SelectionChange 位于私有工作表代码表中(这是它要触发的唯一位置)而不是公共模块代码表,则它是隐式私有的。跨度>
-
@Mat'sMug - 嗯,我知道你不能从另一个代码表中调用它。它必须对该代码表公开,但除此之外是私有的。
-
@Jeeped 如果我在
Sheet1中有那个处理程序并说它是Debug.Print "Hello",然后转到Sheet2,并公开一个Public Sub Test(),它是Sheet1.Worksheet_Change Range("A1"),我将“Hello”打印到即时窗格中。 Seems Public means "public" after all ;-)
标签: excel vba colors conditional-formatting selectionchanged