当单元格达到将增加的值时,从Excel发送自动电子邮件

时间:2014-02-02 00:57:08

标签: excel vba outlook

我有一个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

1 个答案:

答案 0 :(得分:0)

这个答案是一种简化的方法。我们要解决的问题是:自上次发送电子邮件后,当“X”的值增加300或更多时发送电子邮件。

问题1:我们如何知道上次发送电子邮件时“X”的值是多少?

答案1:我们需要在每次发送电子邮件时存储“X”的值并保存这些值以供将来参考。在Excel中,保存以后可以检索的值的自然方法是将其存储在工作表中。我们称之为LogSheet

问题2:现在我正在检查新值,我有“Z”。我应该发送电子邮件吗?

答案2:我们咨询LogSheet并找到触发电子邮件的最后一个值。是Z > 300 + X吗?如果是,我们会发送新电子邮件并将“Z”附加到LogSheet。如果没有,我们会忽略它。

问题3:如何独立跟踪8个实体结果?

答案3:扩展上面的逻辑。

在每一步中,您都需要编写代码。我建议你按顺序解决这些问题,并在遇到困难时提出新的问题。