Ken*_*lon 6 excel vba worksheet
工作表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
Run Code Online (Sandbox Code Playgroud)
Sid*_*out 20
要通过公式捕获更改,您必须使用该Worksheet_Calculate()事件.为了理解它是如何工作的,让我们举一个例子.
=Sheet2!A1+1现在在模块中粘贴此代码
Public PrevVal As Variant
Run Code Online (Sandbox Code Playgroud)
将其粘贴到"图纸代码"区域中
Private Sub Worksheet_Calculate()
If Range("A1").Value <> PrevVal Then
MsgBox "Value Changed"
PrevVal = Range("A1").Value
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
最后在ThisWorkbook代码区域粘贴此代码
Private Sub Workbook_Open()
PrevVal = Sheet1.Range("A1").Value
End Sub
Run Code Online (Sandbox Code Playgroud)
关闭并保存工作簿并重新打开它.现在对单元格A1进行任何更改Sheet2.您会注意到您将收到消息框MsgBox "Value Changed"
快照

| 归档时间: |
|
| 查看次数: |
46938 次 |
| 最近记录: |