【问题标题】:Sending an automatic email from Excel when a cell reaches a value that will increase当单元格达到将增加的值时,从 Excel 发送自动电子邮件
【发布时间】: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 中)

标签: excel vba outlook


【解决方案1】:

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

问题 1:我们如何知道发送最后一封电子邮件时出现的“X”值是多少?

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

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

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

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

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

在每个步骤中,您都需要编写代码。我建议您按顺序解决这些问题,如果遇到困难,请提出新问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    相关资源
    最近更新 更多