Excel 库存电子表格-当单元格值=”时发送电子邮件;“过期”;并使用表中的信息填充电子邮件

Excel 库存电子表格-当单元格值=”时发送电子邮件;“过期”;并使用表中的信息填充电子邮件,excel,vba,outlook,Excel,Vba,Outlook,更新 我对代码进行了如下修改: Private Sub Worksheet_Change(ByVal Target As Range) Call notify End Sub Sub notify() Dim rng As Range For Each rng In Range("N2:N502") If (rng.Value = "Expired") Then Call mymacro(rng

更新

我对代码进行了如下修改:

Private Sub Worksheet_Change(ByVal Target As Range)
    Call notify
End Sub

Sub notify()
    Dim rng As Range
    For Each rng In Range("N2:N502")
       If (rng.Value = "Expired") Then
           Call mymacro(rng.Address)
       End If
    Next rng
End Sub
Private Sub mymacro(theValue As String)
    Dim xOutApp As Object
    Dim xOutMail As Object
    Dim xMailBody As String
    Dim myAddress As String
    Dim myChemical As String
    myAddress = Application.WorksheetFunction.Index(Range("A2:Q502"), Application.WorksheetFunction.Match("Expired", Range("N2:N502"), 0), 15)
    myChemical = Application.WorksheetFunction.Index(Range("A2:Q502"), Application.WorksheetFunction.Match("Expired", Range("N2:N502"), 0), 3)
    Set xOutApp = CreateObject("Outlook.Application")
    Set xOutMail = xOutApp.CreateItem(0)
    xMailBody = "Hello" & vbNewLine & vbNewLine & _
              "This email is to let you know that you have an expired reference standard" & vbNewLine & _
              "The Reference Standard that has expired is: " & myChemical & vbNewLine & vbNewLine & _
              "Thank you," & vbNewLine & _
              "Spreadsheet Manager"
    On Error Resume Next
    With xOutMail
        .To = myAddress
        .CC = ""
        .BCC = ""
        .Subject = "Expired Reference Standard"
        .Body = xMailBody
        .Display   'or use .Send
    End With
    On Error GoTo 0
    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub

这个新代码现在用正确的字段填充电子邮件,但它在第N列中的第一个等于“Expired”的条目上卡住了。它知道有多个“Expired”实例,因为当我将消息中的
myChemical
更改为
value
时,多个电子邮件填充了不同的单元格值。有没有办法修复代码以避免这个错误,或者我必须在代码中添加For Next语句?

这是一个雄心勃勃的项目。如果从工作表更改事件触发代码,则不需要代码持续运行。您可以使用该事件“监视”特定行、列或范围的内容,并在用户更改监视范围内的单元格时运行代码。()

“工作表更改”事件在“工作表”模块中运行,并使用“目标”范围的概念,即触发宏运行的范围或单元格。如果是单个单元格,则您现在有了该单元格的地址,从中可以推断行号并获取该行中的其他数据,或与该单元格相关的数据,具体取决于图纸布局


现在,您可以使用所需的详细信息构建正文。

我的电子表格似乎并非如此。宏所依赖的单元格依赖于公式本身,当我更新引入该公式的单元格时,宏似乎不会自动运行,然后观察参与公式的单元格。