我在尝试使这段代码工作时遇到了一些麻烦:
Private Sub Worksheet_Change(ByVal Target As Range)
Static ZeroFlag As Boolean
Dim KeyCells As Range
Set KeyCells = Range("B29")
On Error Resume Next
Set KeyCells = Application.Union(KeyCells, KeyCells.Precedents)
On Error GoTo 0
If Not Application.Intersect(Target, KeyCells) Is Nothing Then
If (Range("B29").Value <= 0) Xor ZeroFlag Then
MsgBox IIf(ZeroFlag, "Not zero", "zero")
ZeroFlag = Not (ZeroFlag)
End If
End If
End Sub
问题是,警报只显示当我从工作表中更改“B29”所在的值时,但我需要在我更改其他工作表中的值时显示警报。
例如: “B29”单元位于工作表A上,是A1-A2的结果,A2从B工作单元格A1获取其值,但警报仅显示我是否从A工作表更改单元格A2而不是A1 B表。
我该怎么做才能让它发挥作用?
当我第一次开始对这段代码进行处理时,我看起来像这样,当我从diferents表中改变值时它可以工作
Private Sub Worksheet_Calculate()
If Range("B29").Value <= "0" Then
MsgBox "Zero"
Else
MsgBox "Not Zero"
End If End Sub
但是这段代码没有我需要的规则。
在单元格大于0之前,警报不会显示,当值低于0时,警报显示“零”,只要值保持低于0,它就会停止显示,此时值大于0警报显示“非零”,只要值保持在0以上就会停止显示。
我该怎么做才能让它发挥作用?
由于
答案 0 :(得分:1)
您不必在Worksheet_Change中编写代码,而是必须在Workbook_SheetChange中编写代码:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'....write your code here
End Sub
答案 1 :(得分:0)
它在工作 我已经改变了我使用过的第一个代码并包含了其他一些代码,结果就像这样
Private Sub Worksheet_Calculate() Static ZeroFlag As Boolean
If Range("B29").Value <= "0" Xor ZeroFlag Then
MsgBox IIf(ZeroFlag, "Not Zero", "Zero")
ZeroFlag = Not (ZeroFlag)
End If
End Sub
感谢大家的帮助