使用VBA根据数据点发送电子邮件

我基本上是试图发送一封电子邮件,如果某个数据点分别大于或小于最大值和最小值在纸上。 事情是我设立了“If,Then”的声明,但并没有给我想要的结果。 有些文字甚至出现,我想只显示“E”列中的数字。 我想知道我哪里错了。 我将在代码中指定我认为我会出错的地方。 另外,我将Max和Min分别与“K26”和“K25”进行比较。 感谢您的帮助!

Option Explicit Public Sub OutofControl() Dim lRow As Long Dim lstRow As Long Dim toList As String Dim ccList As String Dim bccList As String Dim eSubject As String Dim EBody As String Dim vbCrLf As String Dim data As Variant Dim ul As Variant Dim ll As Variant Dim ws As Worksheet With Application .ScreenUpdating = True .EnableEvents = True .DisplayAlerts = True End With Set ws = Sheets(2) ws.Select lstRow = WorksheetFunction.Max(3, ws.Cells(Rows.Count, "E").End(xlUp).Row) For lRow = 1 To lstRow data = Cells(lRow, "E").Value ul = Range("K26") ll = Range("K25") If data > ul Or data < ll And Not Null Then 'THIS IS WHERE I THINK I NEED TO CHANGE SOMETHING SO IT DOES NOT DETECT THE TEXT vbCrLf = "<br><br>" toList = Range("B1") 'gets the recipient from col B1 eSubject = "Text " & ActiveWorkbook.Name EBody = "<HTML><BODY>" EBody = EBody & "Dear " & Range("B1") & vbCrLf EBody = EBody & "Text :" & Cells(lRow, "C").Value & vbCrLf EBody = EBody & "Link to the SQC Chart:" EBody = EBody & "<A href ='Text'>Text </A>" & vbCrLf EBody = EBody & "</BODY></HTML>" MailData msgSubject:=eSubject, msgBody:=EBody, Sendto:=toList 'Cells(lRow, "W").Value = "Mail Sent " & Date + Time 'Marks the row as "email sent in Column W" End If Next lRow ActiveWorkbook.Save With Application .ScreenUpdating = True .EnableEvents = True .DisplayAlerts = True End With End Sub Function MailData(msgSubject As String, msgBody As String, Sendto As String, _ Optional CCto As String, Optional BCCto As String, Optional fAttach As String) Dim app As Object, Itm As Variant Set app = CreateObject("Outlook.Application") Set Itm = app.CreateItem(0) With Itm .Subject = msgSubject .To = Sendto If Not IsMissing(CCto) Then .Cc = CCto If Len(Trim(BCCto)) > 0 Then .Bcc = BCCto End If .HTMLBody = msgBody .BodyFormat = 2 '1=Plain text, 2=HTML 3=RichText -- ISSUE: this does not keep HTML formatting -- converts all text 'On Error Resume Next If Len(Trim(fAttach)) > 0 Then .Attachments.Add (fAttach) ' Must be complete path'and filename if you require an attachment to be included 'Err.Clear 'On Error GoTo 0 .Save ' This property is used when you want to saves mail to the Concept folder .Display ' This property is used when you want to display before sending '.Send ' This property is used if you want to send without verification End With Set app = Nothing Set Itm = Nothing End Function 

  1. or需要括号来区分and 。 2.下面的代码将检查数值。
 For lRow = 1 To lstRow data = Cells(lRow, "E").Value ul = Range("K26") ll = Range("K25") If data > ul Or data < ll Then If IsNumeric(data) = True And isBlank(data) = False Then vbCrLf = "<br><br>" toList = Range("B1") 'gets the recipient from col B1 eSubject = "Text " & ActiveWorkbook.Name EBody = "<HTML><BODY>" _ & "Dear " & Range("B1") & vbCrLf _ & "Text :" & Cells(lRow, "C").Value & vbCrLf _ & "Link to the SQC Chart:" _ & "<A href ='Text'>Text </A>" & vbCrLf _ & "</BODY></HTML>" MailData msgSubject:=eSubject, msgBody:=EBody, Sendto:=toList 'Cells(lRow, "W").Value = "Mail Sent " & Date + Time 'Marks the row as "email sent in Column W" End If End If Next lRow