【发布时间】:2014-02-02 00:57:07
【问题描述】:
我有一个 Excel 工作表,我已经设置了一个更改事件和模块,以在单元格达到某一列中的某个值时自动发送和发送电子邮件。
我需要设置一个新的更改事件,并假设不同列的模块在值达到某个数字时生成自动电子邮件。我的问题是这个数字会一直在增加,一旦该列从上一封发送的电子邮件中达到每+300,我就需要发送电子邮件。即,如果电子邮件在值达到 1904 时发送,我需要它在达到 2204 时发送,然后是 2504,依此类推。
我已尝试更改示例中的一些代码,但它似乎不起作用。我真的不知道如何编写代码,因此将不胜感激:
Private Sub Worksheet_Change1(ByVal Target As Range)
If Target.Column = 204 Then
If Target.Value Mod 300 = 0 Then
Call EngineHoursW01T
End If
End If
End Sub
模块 -
Sub EngineHoursW01T()
Dim OutApp As Object
Dim OutMail As Object
Dim strbody As String
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
strbody = "Hi" & vbNewLine & vbNewLine & _
"Please service Pump" & vbNewLine & _
"" & vbNewLine & _
"Kind Regards" & vbNewLine & _
"xxxx"
On Error Resume Next
With OutMail
.To = "email address"
.CC = ""
.BCC = ""
.Subject = "Service of Pump"
.Body = strbody
.Attachments.Add ("")
.Display
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
【问题讨论】:
-
我会添加一个新的工作表来保存有关通知和触发器值的信息。这样,您可以检查最近的通知事件,以确定新值是否比之前的值大 300。
-
你能描述一下正在发生/没有发生的事情吗?
-
@AlexK。什么都没有发生,即没有生成电子邮件,我假设我的更改事件或模块中有错误。我对编写 vba 代码了解不多。
-
@andy holaday - 对不起,你完全失去了我。我的工作簿中有 8 个工作表,每个工作表都需要运行事件
-
Mod 300 只有在 Target.Value / 300 没有余数时才会触发(所以 300,600,900 ...)是您想要的吗?如果不是,您将需要存储触发 last 电子邮件发送的值(在隐藏的工作表或 getsetting/savesetting 中)