【发布时间】:2017-03-25 22:01:47
【问题描述】:
如何编写一个 Excel 宏,当某个单元格的某个范围的值发生更改时,它会自动发送一封电子邮件?
问题是我选择的单元格范围具有直接链接到其他电子表格单元格的公式。这些单元格的数据已通过 Excel 的 Web 连接查询进行了更新。如下图所示,a1:b5 范围有公式链接到 d1:e5 范围。
这是我的语法
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngChangeCells As Range
Dim objOutlookApp As Outlook.Application
Dim objMailItem As Outlook.MailItem
Dim strMailBody As String
On Error Resume Next
Set rngChangeCells = Intersect(Target, Me.Range("a1:b5"))
On Error GoTo 0
If Not rngChangeCells Is Nothing Then
Set objOutlookApp = New Outlook.Application
Set objMailItem = objOutlookApp.CreateItem(olMailItem)
strMailBody = "Cell(s) " & rngChangeCells.Address(False, False) & _
" in the worksheet '" & Me.Name & "' were modified on " & _
Format$(Now, "mm/dd/yyyy") & " at " & Format$(Now, "hh:mm:ss") & _
" by " & Environ$("username") & "."
With objMailItem
.To = "myagmarchuluun@gmail.com"
.Subject = "It has changed"
.Body = strMailBody
.Display
End With
Set rngChangeCells = Nothing
Set objOutlookApp = Nothing
Set objMailItem = Nothing
End If
End Sub
【问题讨论】:
-
那么问题或错误是什么?
-
是不是查询刷新没有触发change事件?查询表有一个刷新后事件
Private Sub q_AfterRefresh(ByVal Success As Boolean) -
a1:b5 上的数据具有链接到其他工作表的其他单元格的公式。
-
类似于 a1=sheet2$b$1,如果我手动更改了 a1 单元格的值,则宏已成功运行并显示了我的电子邮件项目。但是 Sheet2$b$1 单元格(具有来自网站的数据连接)的值发生了变化,宏无法正常工作:(