Clever-Excel-Forum

Normale Version: E-Mail nach Zellenprüfung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo Zusammen,

ich habe folgende Anfrage:
In Spalte B ist das Eingangsdatum des jeweiligen Projekts hinterlegt. Die Aufgabe des Makros soll es sein, zuerst das Eingangsdatum zu prüfen, falls dieses älter als 6 Monate ist, soll der Status Spalte D geprüft werden. Wenn der Status Spalte D einen bestimmten Wert, in diesem Fall wäre es "submitted", aufweist soll eine Erinnerungsmail an den Sales Member gesendet werden.

Würde mich über Lösungsvorschläge freuen und bedanke mich im Voraus.
Hallo, im MOF hat das wahrscheinlich (auch) noch niemand g'spannt...
Hallo,

im Prinzip so. Den Code fügst Du in ein Modul ein, aktivierst den im Kommentar genannten Verweis und weist den code z.B. einer Schaltfläche zu.
Hinweis: Bitte poste im anderen Forum, dass Du hier eine Lösung erhalten hast !!

Code:
Option Explicit

' Verweis auf "Microsoft Outlook xxx Object Library"
' schauan
' Programmiert fuer Clever-Excel-Forum 2014
Sub SendInfoMail()
'Variablendekalrationen
Dim olApp As Outlook.Application
Dim objMail As Outlook.MailItem
Dim iCnt%
'Outlook-Anwendungsobjekt setzen
Set olApp = Outlook.Application
'Schleife  bis zur letzten gefuellten Zelle der Spalte B
For iCnt = 2 To Sheets("Tabelle1").Cells(Rows.Count, 2).End(xlUp).Row
    'Wenn Datum in Zelle aelter als 183 Tage, dann
    If Sheets("Tabelle1").Cells(iCnt, 2).Value < Date - 183 Then
        'email-Objekt setzen
        Set objMail = olApp.CreateItem(olMailItem)
        'mit dem email
        With objMail
            'an
            .To = Sheets("contacts").Cells(Sheets("contacts").Columns(1).Find(Sheets("Tabelle1").Cells(iCnt, 3).Value).Row, 2).Value
            'Betreff
            .Subject = "Es wird Zeit ... Projekt: " & Sheets("Tabelle1").Cells(iCnt, 1).Value
            'Textkoerper
            .Body = "Der Termin ist schon 6 Monate ueberschritten. Mit freundlichen Grüßen"
            'email anzeigen
            .Display
        'Ende mit dem email
        End With
        'email-Objekt zuruecksetzen
        Set objMail = Nothing
    'Ende Wenn Datum in Zelle aelter als 183 Tage, dann
    End If
'Ende Schleife  bis zur letzten gefuellten Zelle der Spalte B
Next
'Outlook-Objekt zuruecksetzen
Set olApp = Nothing
End Sub
Vorab erstmal Danke.

Beim Ausführen des Befehls wird mir nun ein Fehler beim Kompilieren angezeigt. Wobei die Zeile mit "Sub SendInfoMail ()" gelb hinterlegt wird und beim schließen des VBA Editors der Hinweis "Dieser Befehl beendet den Debugger" angezeigt wird.

Konkrete Vorschläge?

Darüber hinaus verstehe ich an sich den Befehl, können wir allerdings noch die Spalte D = Status einpflegen - sodass im konkreten Fall die Mail generiert wird, wenn das Datum älter als 183 Tage ist und der Status bspw. auf "submitted" gesetzt ist.

Vielen Dank im Voraus.
Hallöchen,

ich hatte doch darum gebeten, dass Du im anderen Forum postest, dass Du hier eine Lösung bekommen hast. Der Fehker kommt vermutlich, weil Du noch einen Hinweis nicht beachtet hast ... Also, poste drüben mal einen Link auf meine Antwort und dann machen wir hier weiter.
erledigt.
Hallo,

also, der Fehler kommt wahrscheinlich, weil Du den Verweis nicht gesetzt hast, siehe dazu der Kommentar am Anfang des Makros. Du findest den unter dem Menü | Extras | Verweise im VBA-Editor. Ich hatte xx hingeschrieben, weil der von Excelversion zu Excelversion eine unterschiedliche Nummer hat - bei uns mit 2013 ist es die 15.
super danke, habs hinbekommen.

können wir noch das Problem mit Spalte D und dem Status lösen?

gruß
Hallöchen,

erst mal ungetestet

ersetze die Zeile

If Sheets("Tabelle1").Cells(iCnt, 2).Value < Date - 183 Then

durch

If Sheets("Tabelle1").Cells(iCnt, 2).Value < Date - 183 and Sheets("Tabelle1").Cells(iCnt, 4).Value = "submitted" Then


Bei submitted bitte auf die korrekte Schreibweise achten.
funktioniert soweit. werde es noch weiter testen.

besten dank für den schnellen und perfekten support!!!
Seiten: 1 2