Sub Vencimiento()
Dim nFila As Double
Dim rCelda As Range
Dim sVencimiento As String
Dim n As Double
Dim sFactVence As String
Dim bFactVencidas As Boolean
'Contamos Filas
bFactVencidas = False
nFila = Worksheets("FINAL").Range("A" & Rows.Count).End(xlUp).Row
'Revisamos la fecha de vencimiento
'si está vencida o si vence a 1,2, 3, 4 o mas meses
For Each rCelda In Worksheets("FINAL").Range("D2:D" & nFila)
Select Case (rCelda.Value - Date)
Case Is >= 120
sVencimiento = "Mayor a 4 Meses"
Case Is >= 90
sVencimiento = "4 Meses"
Case Is >= 60
sVencimiento = "3 Meses"
Case Is >= 30
sVencimiento = "2 Meses"
Case Is > 0
sVencimiento = "1 Mes"
Case Else
sVencimiento = "Vencida"
End Select
rCelda.Offset(0, 11).Value = sVencimiento
Next
'Revisamos si paso de vencimiento
For Each rCelda In Worksheets("FINAL").Range("O2:O" & nFila)
If rCelda.Value <> "Vencida" Then
sFactVence = sFactVence & "--- " & Chr(10) & _
"VENCIMIENTO EN : " & rCelda.Value & Chr(10) & _
"CAMPO1: " & rCelda.Offset(0, -13).Value & Chr(10) & _
"CAMPO2: " & rCelda.Offset(0, -12).Value & Chr(10) & _
"CAMPO3: " & rCelda.Offset(0, -11).Value & Chr(10) & _
"--- " & Chr(10) & Chr(10)
'rCelda.Value = "SI"
bFactVencidas = True
End If
Next
'enviamos el correo
If bFactVencidas = True Then
Call Enviar_Correo(sFactVence)
End If
End Sub
Sub Enviar_Correo(ByVal sFacturas As String)
Set fase1 = CreateObject("outlook.application")
Set fase2 = fase1.CreateItem(olMailItem)
fase2.To = "midir@email.com"
fase2.Subject = "Informes "
fase2.Body = "Informes " & Chr(10) & _
"_________ " & Chr(10) & Chr(10) & sFacturas
'fase2.Attachments.Add ActiveWorkbook.FullName
fase2.Send
Set correo1 = Nothing
Set correo2 = Nothing
End Sub
una web muy util para realizar este tipo de macros -> http://www.rondebruin.nl/win/section1.htm