Ejecutar macro una sola vez
Tengo el siguiente macro para que cuando el resultado de una fórmula me de "-1" ejecute otro macro que me envía un mail automáticamente y a la vez, me indica en la columna siguiente a la fórmula que me ha enviado el mail. El problema es que cada vez que abro la hoja de excel me envía un mail aunque ya me lo hubiera enviado.
¿Cómo puedo hacer para que si ya me envió el mail una vez no me lo vuelva a enviar?
Si alguien pudiera ayudarme se lo agradecería mucho. Os dejo también el macro que me envía el mail por si el error estuviera ahí.
Private Sub Worksheet_Calculate()
Dim FormulaRange As Range
Dim NotSentMsg As String
Dim MyMsg As String
Dim SentMsg As String
Dim MyLimit As Double
NotSentMsg = "Not Sent"
SentMsg = "Sent"
MyLimit = -1
Set FormulaRange = Me.Range("m5:m4000")
On Error GoTo EndMacro:
For Each FormulaCell In FormulaRange.Cells
With FormulaCell
If FormulaCell.Value = MyLimit Then
MyMsg = SentMsg
Call Mail_with_outlook1
End If
Application.EnableEvents = False
FormulaCell.Offset(0, 1).Value = MyMsg
Application.EnableEvents = True
End With
Next FormulaCell
ExitMacro:
Exit Sub
EndMacro:
Application.EnableEvents = True
MsgBox "Some Error occurred." _
& vbLf & Err.Number _
& vbLf & Err.Description
End Sub
Sub Mail_with_outlook1()
Dim OutApp As Object
Dim OutMail As Object
Dim strto As String, strcc As String, strbcc As String
Dim strsub As String, strbody As String
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
strto = "xx@xx"
strcc = ""
strbcc = ""
strsub = "Incidencia Registro"
strbody = "Buenos días" & vbNewLine & vbNewLine & _
"Mensaje aviso : " & Cells(FormulaCell.Row, "A").Value & _
vbNewLine & vbNewLine & "Un Saludo"
With OutMail
.To = strto
.CC = strcc
.BCC = strbcc
.Subject = strsub
.Body = strbody
.Send 'End With
Set OutMail = Nothing
Set OutApp = Nothing
End Sub