Reputation: 117
I am basically trying to send out an email if a certain data point is greater than or less than a max and min point respectively on the sheet. The thing is I set up the "If, Then" statement but it is not giving me the results that I wanted. Some text is even showing up and I am trying to only show the numbers that are in column "E". I wonder where I am going wrong. I will specify in the code where I think I am going wrong. Also I am comparing with "K26" and "K25" respectively for Max and Min. Thank you for your help!
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
Upvotes: 1
Views: 135
Reputation: 6105
or
requires parenthesis to distinguish from and
. 2. Code below will check for numeric value.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
Upvotes: 1