根据单元格中的特定值触发宏

时间:2017-02-04 11:30:41

标签: vba

我有一个由按钮触发的宏,然后为一个certrain范围着色。所以喜欢:

Sub colourRange()
   #Colour range
end sub

这一切都有效但事情是我必须按一个按钮才能工作。实际上我正在寻找的是某种if / else语句,当你在单元格中填入某个值时会触发宏。

anbybody能告诉我是否有办法通过在单元格中输入某个值来触发宏?

2 个答案:

答案 0 :(得分:2)

您的第一个(自然)选择应该是条件格式。如果它对您的特定情况不起作用,您可以拦截Worksheet_Change事件:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, myRange) Is Nothing And myRange.Value = ACertainValue Then
        Call colourRange
    End If
End Sub

将上述处理程序放在要监视的Worksheet的代码模块中。

答案 1 :(得分:1)

  当您在单元格中填写某个值时,

会触发宏

我会说你想要对任何单元进行更改,只要它已输入某个值

然后我会在相关的工作表代码窗格中编写以下代码:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.count>1 And Target.Value = "your certain value" Then colourRange
End Sub

如果您希望每个工作表都能实现这一点,请在ThisWorkbook代码窗格中对其进行编码,如下所示:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Target.Count > 1 And Target.Value = "your certain value" Then colourRange
End Sub