我有一张带有两个按钮的工作表。一个按钮在单元格(E2)中放置一个值,另一个按钮在每次按下时将该值(在E2中)减1。我希望E2单元格中的值指示D2的颜色,这样只要单元格的值> 1,D2就是红色。 0 =绿色,当它=< 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的值时才有效。如果E2的值变为值> 1,则它不起作用。 0按下按钮1.任何人都可以帮助我改变它,这样它的工作原理。谢谢!
答案 0 :(得分: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
也可以使用条件格式来实现。
答案 1 :(得分: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