gpt4 book ai didi

excel - 当单元格被公式更改时,VBA 代码不运行

转载 作者:行者123 更新时间:2023-12-02 03:00:24 26 4
gpt4 key购买 nike

工作表 A 包含从工作表 B 收集的数据范围。 工作表 A 有一个宏,用于计算数据是否高于某个值,然后调用电子邮件模块向选定的用户发送电子邮件。

当在工作表 A 上手动输入数据时,宏会起作用,但是当从工作表 B 中提取数据时,宏不会触发。

我不确定我的 VBA 代码需要更改什么。

Private Sub Worksheet_Change(ByVal Target As Range)
Call MailAlert(Target, "B5:M5", 4)
Call MailAlert(Target, "B8:M8", 7)
Call MailAlert(Target, "B11:M11", 6)
Call MailAlert(Target, "B14:M14", 2)
Call MailAlert(Target, "B17:M17", 4)
Call MailAlert(Target, "B20:M20", 1)
Call MailAlert(Target, "B23:M23", 3)
Call MailAlert(Target, "B26:M26", 1)
Call MailAlert(Target, "B29:M29", 5)
Call MailAlert(Target, "B32:M32", 1)
Call MailAlert(Target, "B35:M35", 7)
Call MailAlert(Target, "B38:M38", 20)
Call MailAlert(Target, "B41:M41", 0)
End Sub

Private Sub MailAlert(ByVal Target As Range, ByVal Address As String, ByVal Value As Integer)
If Target.Cells.Count > 1 Then Exit Sub
If Not Application.Intersect(Range(Address), Target) Is Nothing Then
If IsNumeric(Target.Value) And Target.Value > Value Then
Call Mail_small_Text_Outlook
End If
Application.EnableEvents = True
End If
End Sub

最佳答案

要通过公式捕获更改,您必须使用 Worksheet_Calculate() 事件。为了理解它是如何工作的,让我们举个例子。

  1. 创建新工作簿。
  2. 在 Sheet1 单元格 A1 中,输入此公式 =Sheet2!A1+1

现在在模块中粘贴此代码

Public PrevVal As Variant

将其粘贴到工作表代码区域

Private Sub Worksheet_Calculate()
If Range("A1").Value <> PrevVal Then
MsgBox "Value Changed"
PrevVal = Range("A1").Value
End If
End Sub

最后在 ThisWorkbook 代码区域中粘贴此代码

Private Sub Workbook_Open()
PrevVal = Sheet1.Range("A1").Value
End Sub

关闭并保存工作簿并重新打开它。现在对 Sheet2 的单元格 A1 进行任何更改。您会注意到,您将收到消息框 MsgBox "Value Changed"

快照

enter image description here

关于excel - 当单元格被公式更改时,VBA 代码不运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11406628/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com