So wie es bei dir ist nicht. Bei dir steht ja
If Date = ("27.01" & Year(Date)) Then
????????
End If
und hier kommt der EMail versand.
Ich habe mal ? reingemacht. Bei deinem Code machst du zwar einen Vergeich aber wertest den nicht aus. Mit dem End If beendest du ihn. Bei den Fragezeichen müsste eigentlich stehen, was er machen soll wenn der Vergleich wahr ist bzw. wenn er falsch ist. So läuft der Vergleich und danach geht es unten weiter. Den Vergleich hättest du da auch raus nehmen können. Wenn du damit steuern willst, dann bspw. so:
If Date = ("27.01" & Year(Date)) Then
'wir haben den 27.01.2016
Set olApp = CreateObject("Outlook.application")
Set olMyItem = olApp.CreateItem(0)
With olMyItem
.To = ""
.CC = ""
.Subject = ""
.Body = "Hallo Ivan und Markus" freundlichen Grüßen Ivan und Markus:"
.Send
End With
Else
' ein anderes Datum
End If
Aber beachte. Der Code wird dann nur an dem Datum ausgeführt. Wochenende / Krank / Urlaub was auch immer und der Code wird nicht an dem Tag ausgeführt, bringt keine Nachricht. Deshalb war der Vorschlag mit der Abfrage, ob er schon gesendet wurde. Falls du dann am 27. Krank bist und am 28. kommst und dein Code merkt - mensch noch nicht versandt - schickt er ihn. Könntest bspw. nach end with. ein Activesheet.cells(zeile, spalte) ="x" setzen.
und im Else einfügen
If Date > ("27.01" & Year(Date)) And ActiveSheet.Cells(zeile, spalte) <> "x" Then
Set olApp = CreateObject("Outlook.application")
Set olMyItem = olApp.CreateItem(0)
With olMyItem
.To = ""
.CC = ""
.Subject = ""
.Body = "Hallo Ivan und Markus" freundlichen Grüßen Ivan und Markus:"
.Send
End With
ActiveSheet.Cells(zeile, spalte) = "x"
End If
Dann würde er ihn später sende. VG
|