Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1356to1360
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Email per vba nur einmal alle 10 Tage versenden

Email per vba nur einmal alle 10 Tage versenden
10.04.2014 08:02:05
Lara
Hallo,
wenn in meiner Tabelle ein neues Produkt verfügbar ist, wird an einige Personen automatisch eine Email versendet. Das geschied durch ein Workbook_beforeclose Ereignis abhängig davon, ob die Zelle A2 befüllt ist.
Manchmal sind diese neuen Produkte aber Tagelang in der Tabelle. Ich möchte gerne, dass die Email für ein bestimmtes Produkt (Produktname ist in A2) nur einmal alle 14 Tage versandt wird.
Im Moment sieht es bei mir so aus:
If Range("A2").Value > " " Then
With objMailItem
.To = eAdress
.Subject = "Neues Produkt verfügbar."
.Display
'.Send
.body = eSubject
End With
End If
Kann jemand hier eine Funktion einbauen, die wenn sich der Inhalt von A2 nicht geändert hat auch keine Email verschickt wird?
Vielen Dank!
Beste Grüße Lara

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Email per vba nur einmal alle 10 Tage versenden
10.04.2014 08:18:26
Hajo_Zi
Hallo Lara,
schreibe in B2 das Datum wann gesendet und vergleiche dieses mit Date.

AW: Email per vba nur einmal alle 10 Tage versenden
10.04.2014 08:35:51
Lara
Hallo Hajo,
B2 ist genauso wie alle Zellen bis FI schon besetzt. Ich könnte also in FJ das Datum einfügen lassen, bräuchte aber auch dafür eine Formel. Manuell darf hier später gar nichts mehr gemacht werden.
Ich würde dann also in FJ die Formel =WENN(A2>" ";HEUTE();" ") packen. Wenn A2 aber unverändert gefüllt ist, würde sich das Datum ja jeden Tag wieder anpassen. Oder kann man das anders lösen?
Ich dachte eher daran, dass man den Inhalt von A2 mit dem vom Vortag vergleicht oder mit dem vergleicht, was vor dem letzten Schließen dort stand oder so. Die 14 Tage Sache ist eigentlich auch egal, hauptsache keiner wird zugespamt.
Gruß Lara

Anzeige
AW: Email per vba nur einmal alle 10 Tage versenden
10.04.2014 08:39:03
Hajo_Zi
Hallo Lara,
ich sehe Deine Datei nicht, da gehe ich von meiner aus.
Warum Formel warum nicht das before Ereignis, das Du schon benutzt?
Deine Formel würde jeden Tag ein anders Datum schreiben, was Du wohl nicht willst?
Keine Ahnung was in A2 steht.
Gruß Hajo

AW: Email per vba nur einmal alle 10 Tage versenden
10.04.2014 08:30:56
UweD
Hallo Lara
eine Möglichkeit:
In einer freien Zelle (hier im Beispiel B2) schreibst du bei Änderung in A2 das aktuelle Datum ( Per Worksheet_change )
Bei Before_close fragst du das Datum mit ab...
In das Tabellenblatt:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fehler
If Not Intersect(Range("A2"), Target) Is Nothing Then
Application.EnableEvents = False
Range("B2") = Date
End If
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
Application.EnableEvents = True
End Sub
In DieseArbeitsmappe:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Range("A2").Value > " " And Date - Range("B2") >= 10 Then
MsgBox "würde jetzt senden"
With objMailItem
.To = eAdress
.Subject = "Neues Produkt verfügbar."
.Display
'.Send
.body = eSubject
End With
Else
MsgBox "Tue nichts"
End If
End Sub

Gruß UweD

Anzeige
da war Hajo wieder schneller...
10.04.2014 08:32:35
UweD

AW: Email per vba nur einmal alle 10 Tage versenden
10.04.2014 09:42:04
Lara
Hallo Uwe,
Das mit dem Datum einfüllen nach einer Änderung funktioniert!
Im Moment wird die Email aber nur dann versandt, wenn dort kein Datum ausgefüllt ist. Egal ob ich beim Datum 09.04.14, 10.04.14 oder 11.04.14 eingebe.
Woran kann das liegen?
Gruß Lara

AW: Email per vba nur einmal alle 10 Tage versenden
10.04.2014 10:07:54
UweD
Hallo nochmal
Du hattes geschrieben..
"nur einmal alle 14 Tage versandt wird" bzw. 10 Tage
Die mail wird nur gesendet, wenn das Datum älter als (hier 10 Tage) ist
....Date - Range("B2") >= 10
Das kann natürlich erweitert werden..
z.B.
Wenn Datum in der Zelle = Heute ODER wenn Datum älter als 10 Tage ist
Wenn dann 1x nach 10 Tagen gesendet wurde, muss das wieder als Startdatum für weiteres mailen gesetzt werden...
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Range("A2").Value > " " _
And (Range("B2") = Date Or Date - Range("B2") >= 11) Then
Range("B2") = Date - 1 ' hierdurch wird Heute nur 1x gesendet / und das Zählen der Tage  _
beginnt neu
MsgBox "würde jetzt senden"
'        With objMailItem
'            .To = eAdress
'            .Subject = "Neues Produkt verfügbar."
'            .Display
'            '.Send
'            .body = eSubject
'        End With
Else
MsgBox "Tue nichts"
End If
End Sub

Gruß UweD

Anzeige
AW: Email per vba nur einmal alle 10 Tage versenden
10.04.2014 11:18:14
Lara
Hallo Uwe,
danke für deine Erklärung. Ich habe kein allzugroßes Verständnis von Programmiersprachen. Ich hatte einfach nicht verstanden wofür das "10" steht :-).
Gruß Lara

AW: Email per vba nur einmal alle 10 Tage versenden
10.04.2014 11:29:50
Lara
Hallo Uwe,
du hast mir eben folgendes geschickt:
<pre>Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fehler
If Not Intersect(Range("A2"), Target) Is Nothing Then
Application.EnableEvents = False
Range("FK2") = Date
End If
Err.Clear
Fehler:
If Err.Number <> 0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
Application.EnableEvents = True
End Sub</pre>
Das funktioniert mit A2 super. Ich möchte aber gerne, dass es für A3,A4,A5,A6 und A7 auch klappt. Habe eben schon versucht, den Inhalt des Subs einfach 6 mal untereinander reinzuschreiben, aber das gab Fehlermeldungen.
Gruß Lara

Anzeige
AW: Email per vba nur einmal alle 10 Tage versenden
10.04.2014 12:58:49
UweD
Hi
Soll für jede Zeile ein eigenes Datum verwaltet werden, oder reicht eins?
Bei EINEM wäre das so möglich
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Lastsend As Range
Dim Bereich As Range
Set Lastsend = Range("B2") 'Kann beliebige Zelle sein
Set Bereich = Range("A2:A7")
If WorksheetFunction.CountA(Bereich) > 0 _
And (Lastsend = Date Or Date - Lastsend >= 11) Then
Lastsend = Date - 1 ' hierdurch wird Heute nur 1x gesendet / und das Zählen der Tage  _
beginnt neu
MsgBox "würde jetzt senden"
'        With objMailItem
'            .To = eAdress
'            .Subject = "Neues Produkt verfügbar."
'            .Display
'            '.Send
'            .body = eSubject
'        End With
Else
MsgBox "Tue nichts"
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Lastsend As Range
Dim Bereich As Range
On Error GoTo Fehler
Set Lastsend = Range("B2") 'Kann beliebige Zelle sein
Set Bereich = Range("A2:A7")
If Not Intersect(Bereich, Target) Is Nothing Then
Application.EnableEvents = False
Lastsend = Date
End If
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
Application.EnableEvents = True
End Sub
Gruß UweD

Anzeige
AW: Email per vba nur einmal alle 10 Tage versenden
10.04.2014 14:33:49
Lara
Hey,
das sieht gut aus :-). Danke dir!!
Viele Grüße Lara

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige