1

我有一张有两个按钮的表。一个按钮在单元格 (E2) 中放置一个值,而另一个按钮在每次按下时将该值(在 E2 中)减 1。我希望 E2 单元格中的值指示 D2 的颜色,这样每当单元格的值 > 0 时 D2 为红色,当它 =< 0 时为绿色。

这是我的两个按钮:

按钮 1

Sub Use2()
     Range("e2").Value = Range("d2")
End Sub

按钮 2

Sub Subtract1()
     Range("E2").Value = Range("E2").Value - 1
End Sub

我添加了这段代码:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = Range("E2").Address and Target.Value >0 Then
      Range("D2").Interior.Color = vbRed
  End If
End Sub

我什至没有进入绿色部分,因为这只有在我在 E2 中手动输入大于 0 的值时才有效。如果通过按下按钮 1 将 E2 的值更改为 > 0 的值,则它不起作用。任何人都可以帮我更改它以使其起作用。谢谢!

4

2 回答 2

1

每当使用Worksheet_Change事件

1)Application.EnableEvents用于防止在其他代码运行时触发事件。

2) 使用错误处理,以便将 EnableEvents 设置为 True

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False

    On Error Resume Next

    If Not Intersect(Range("E2"), Target) Is Nothing Then

        If Target.Value > 0 Then
            Range("D2").Interior.Color = vbRed
        Else
            Range("D2").Interior.Color = vbGreen
        End If
    End If

    Application.EnableEvents = True
End Sub

它也可以使用条件格式来实现。

在此处输入图像描述

于 2013-05-20T01:18:06.023 回答
0

除了@Santosh 关于在事件宏运行时启用/禁用事件的评论,假设您的子例程都在工作表代码模块中,您可以简单地强制调用_Change事件,如下所示:

Sub Use2()
    Range("E2").Value = Range("E2")
    Worksheet_Change Range("E2")
End Sub

Sub Subtract1()
    Range("E2").Value = Range("E2").Value - 1
    Worksheet_Change Range("E2")
End Sub
于 2013-05-20T01:39:31.430 回答