为了账号安全,请及时绑定邮箱和手机立即绑定

请教通过公式更改单元格时,VBA代码不会运行

请教通过公式更改单元格时,VBA代码不会运行

交互式爱情 2019-09-05 10:05:14
通过公式更改单元格时,VBA代码不会运行工作表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 SubPrivate 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 IfEnd Sub
查看完整描述

2 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

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

  1. 创建一个新工作簿。

  2. 在Sheet1 Cell 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 IfEnd Sub

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

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

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



查看完整回答
反对 回复 2019-09-07
  • 2 回答
  • 0 关注
  • 548 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信