pronmaster
Goto Top

Excel Nachfrage: Datum aus Spalte ausgeben

Hallo Zusammen,

ich habe folgende Aufgabe bekommen:

Wir haben eine Excel in der in einer Spalte das Ablaufdatum von Produkten stehen.
Wenn ein Produkt jetzt 14 Tage vor dem Ablauf steht, soll eine E-Mail an xxx gesendet werden.

Ich habe ein Makro geschrieben, welches das Datum in der Zeile M6 prüft. Wenn das Datum M6 größer als Heute ist wird eine Mail versendet.

Sub workbook_open()
Sub automatischerVersand()
If ThisWorkbook.Worksheets("Produkte").Range("M6") > Date Then
Application.Dialogs(xlDialogSendMail).Show _
"info@mail.de", "Übersichtsliste Produkte"
End If
End Sub

Jetzt habe ich in der Spalte E natürlich ganz viele Daten übereinander stehen. Wie bekomme ich das jetzt hin, dass er mir in die Zelle M6 das Datum reinschreibt mit einem Ablaufdatum in 14 Tage [=Heute()+14] wiedergibt.

Ich habe an eine Wenn Dann Funktion gedacht aber es happert ein wenig an der Umsetzung.

vllt hat ja noch jmd von euch eine viel einfacherer Lösung.

Content-Key: 329492

Url: https://administrator.de/contentid/329492

Printed on: April 18, 2024 at 10:04 o'clock

Member: Xaero1982
Xaero1982 Feb 15, 2017 at 10:23:45 (UTC)
Goto Top
Moin,

irgendwie ist dein Text ein wenig verwirrend.

Was soll genau in M6 stehen?
Das Datum (heute) + 14 Tage?

Beispiel?

Grüße
Mitglied: 132272
132272 Feb 15, 2017 updated at 14:26:02 (UTC)
Goto Top
Hier ein mögliches Skript das davon ausgeht das die Datumswerte in Spalte E2:EX stehen und in Spalte F jeweils Produktname oder Artikelnummer.
Leider fehlen ja sämtliche Infos zum Arbeitsblatt.
Sub workbook_open()
	Dim colExpire as New Collection
	With Sheets("Produkte")  
		For Each cell In .Range("E2:E" & .Cells(Rows.Count,"E").End(xlUp).Row)  
			If cell.Value <> "" and cell.Value =< Date() + 14 Then  
				colExpire.Add col.Offset(0,1).Value
			End If
		Next
		If colExpire.Count > 0 Then
			With CreateObject("Outlook.Application").CreateItem(0)  
				.To = "empfaenger@domain.de"  
				.Subject = "Bald ablaufende Produkte"  
				strBody = "Folgende Produkte laufen innerhalb der nächsten 14 Tage ab:" & vbNewLine  
				For Each product In colExpire
					strBody = strBody & "- " & product & vbNewLine  
				Next
				.Body = strBody
				.Display
                                ' zum direktem senden auskommentieren  
                                '.Send  
			End With 
		End If
	End With
End Sub
Gruß