Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1968to1972
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

E-Mail automatisch versenden wenn Zelleninhalt durch Formel

E-Mail automatisch versenden wenn Zelleninhalt durch Formel
28.03.2024 10:00:56
René Serk
Hallo Leute,
ich kenne mich mit VBA Programmierung noch nicht doll aus, habe im Forum ein tolles Makro gefunden, welches mir bei meinem Problem helfen könnte. Das Makro habe ich schon ein wenig angepasst, um es zu testen. Ich bekomme es aber nicht hin, dass meine Vorstellung funktioniert. Ich lasse in der Range ("AJ49:AJ64") E-Mail-Adressen eintragen, wenn sie die Mail bekommen sollen. (1s ist der Eintrag dort vorhanden), durch mehrere Bedingung (Monat,Tag; Makro Uhrzeit mit Vergleich Uhrzeit; usw.) Das Makro müsste so angepasst werden, dass die Mails versendet werden wenn dort die jeweiligen E-Mail-Adresse auftauchen. Steht nichts drin=keine Mail, stehen Einträge drin=dann Eintrag gleich Empfänger und versenden. Range ("AJ49:AJ64")
Bislang funktioniert das Makro nur wenn ich die E-Mail-Adresse nicht durch eine Formel sondern händisch eintrage und das auch nur zu einer konstanten Emailadresse.

Ich bitte nun Hilfe um dieses Problem zu lösen.

Option Explicit

'----- Setup >------
Private Const °Input_ As String = "a.a@muster.com*"

Private Const °Email_Address_To As String = "a.a@muster.com"
Private Const °Email_Title As String = "Text"
Private Const °Email_Text As String = "hier steht ein Text "
'-----------


'================== Events >==================
Private Sub Worksheet_Change(ByVal Target As Range)
'-------- Worksheet_Change(ImputCell) >--------
'*After_Cell_Input_Change
If Not Intersect(Target, Range("AJ49:AJ64")) Is Nothing Then
If Target.Value Like °Input_ Then
Dim sText As String
sText = °Email_Text
sText = sText & vbCrLf & "Eingabewert =" & Target.Value & " in Zeile: " & Target.Address
Send_Email (sText)
End If
End If
'----------------
End Sub
'====================================



'================== Functions >==================
Private Sub Send_Email(ByVal sText As String)
'------------- Send_Email() >-------------
'---- Send with Outlook >----
Dim app_Outlook As Outlook.Application
Set app_Outlook = New Outlook.Application

'-- Email einstellen >--
Dim objEmail As Outlook.MailItem

'-- Send Email >--
Set objEmail = app_Outlook.CreateItem(olMailItem)
objEmail.To = °Email_Address_To
objEmail.Subject = °Email_Title
objEmail.Body = sText
objEmail.Display False
objEmail.Send '*optional
'----


' Abschluss >
Set objEmail = Nothing
Set app_Outlook = Nothing
'

'--------
'--------------------------
End Sub

'====================================


8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: E-Mail automatisch versenden wenn Zelleninhalt durch Formel
28.03.2024 12:10:50
ralf_b
Worksheet_Change reagiert nur auf direkte Zelländerungen. Änderungen durch Formelergebnisse werden nicht erkannt.
Es reagiert auch schon auf den ersten Buchstaben, den du eingegeben hast. Vielleicht ist das nicht die richtige Art den E-Mailversand auszulösen.
Um die Adressaten aus dem Zellbereich auszulesen mußt du natürlich diese Elemente auch dynamisch gestalten und nicht als Konstanten nutzen. d.h. die Zellwerte vor dem Versenden in die entsprechenden Felder der Email eintragen. Aktuell übergibst du nur einen Text an das Emailmakro.

Entscheide dich ob du die Mails bei jeder Zelländerung direkt versenden möchtest oder nach Abschluß der Bearbeitung der Tabelle durch einen Auslöser z.b. Button.

Anschliessend muß die betreffende Zelle auch wieder geleert werden. Sonst steht nach Versand dann ja noch eine Emailadresse drin.

Anzeige
E-Mail automatisch versenden wenn Zelleninhalt durch Formel
28.03.2024 14:07:29
René S
OK danke, das ist für mich nicht das Problem ich kann dort auch eine 1 eintragen lassen, dann müsste die 1 aber in jeder Zeile einer E-Mail-Adresse zugeordnet sein.
Die Mail soll versendet werden so bald dort die 1 auftritt das ist jetzt bei mir jeden Tag um 15:00 Uhr. Wenn ich das um ändere steht die 1 für eine Sekunde drin bei dem die Bedingungen erfüllt sind. Meine Frage ist wie der Code umgeändert werden müsste. Ich könnte die E-Mail-Adressen auch in Range ("AK49:AK64") eintragen, die müssten dann aber im Makro zugeordnet werden wenn Range ("AJ49:AJ64")=1 dann Mail an die, die in Range ("AK49:AK64") stehen.
Die Mail soll nur in dem Augenblick versendet werden wenn dort die 1 steht. (Zelländerung würde doch 2 Mails auslösen oder?)
Mit der objEmail.To Zeile hast du Recht wenn die Adressen dort stehen bleiben. Betreff und Text ist bei mir aber immer gleich
Anzeige
AW: E-Mail automatisch versenden wenn Zelleninhalt durch Formel
28.03.2024 14:58:32
ralf_b
mal beispielhaft mittels Parmeterübergabe aus Spalte AK



'im Change
'-----------------------------
If Target.Value = 1 Then 'wenn du ne 1 benutzt
Dim sText As String
sText = Modul1.°Email_Text 'private Variablen/Konstanten aus anderen Modulen können evtl. nicht zugreifbar sein.

#das mit dem Eingabewert passt hier irgendwie nicht rein.
sText = sText & vbCrLf & "Eingabewert =" & Target.Value & " in Zeile: " & Target.Address

'zwei Parameter an Emailmakro übergeben
Send_Email sText, Cells(Target.Row, "AK")
End If
'---------------------------


Sub Send_Email(ByVal sText$, sTo$)

'....
objEmail.to = sTo
objEmail.subject = °Email_Title
objEmail.Body = sText
'-----
Anzeige
AW: E-Mail automatisch versenden wenn Zelleninhalt durch Formel
28.03.2024 16:42:31
RenéS
Danke habe ich leider nicht ganz verstanden :c

wie würde der Code denn komplett aussehen.
Ich hatte noch in der Beschreibung bei der Antwort von mir einen Fehler.
Steht in AJ49=1 (ist nur 1 Sekunde der Fall) dann Mail an AK49, Steht in AJ50=1 (ist nur 1 Sekunde der Fall) dann Mail an AK50 bis Zeile AJ64 AK64
AW: E-Mail automatisch versenden wenn Zelleninhalt durch Formel
28.03.2024 17:01:54
ralf_b
Vielleicht erklärst du mal den ganzen Ablauf, den du dir da vorstellst.
wie kommen den die Einträge in die zu prüfenden Zellen zu Stande? Händischer Eintrag oder Formel?
Soll immer nur die Mail für die eine Zelle verschickt werden?

das ist der Wert aus AK Cells(Target.Row, "AK") Target ist die aktive Zelle.
Dieser wird an das Sendmail makro übergeben. Wie die Varaible dann im Makro heist ist relativ egal. Hier heisst sie "sTo"
Send_Email sText, Cells(Target.Row, "AK") ist der Befehl, der das Makro startet und die 2 Parameter mit übergibt.

Send_Email(ByVal sText$, sTo$) im Kopf des Makros wird festgelegt wie die 2 Parameter im Makro heissen werden.
objEmail.to = sTo hier wird der Wert aus AK als Adresse benutzt.

Anzeige
AW: E-Mail automatisch versenden wenn Zelleninhalt durch Formel
28.03.2024 18:36:25
RenéS
In den Zellen AJ49 bis AJ64 wird jetzt per Formel eine 1 eingetragen.
wenn in AJ49 die 1 drin steht (1Sekunde) dann sende AK49 die Mail
wenn in AJ50 die 1 drin steht (1Sekunde) dann sende AK50 die Mail
wenn in AJ51 die 1 drin steht (1Sekunde) dann sende AK51 die Mail
.
.
.
..
wenn in AJ64 die 1 drin steht (1Sekunde) dann sende AK64 die Mail

allso überprüfe die Range("AJ49:AJ64") und sende Allen die gleiche Mail bei denen die 1 steht

ich lade mal die Datei ohne Makro hoch

dazu müsste man an den jeweiligen Tag ein b eintragen in der Range("C13:Ag28") der Monat müsste stimmen und in der Zelle B7 müsste durch Uhrzeitvergleich um 15:00 Uhr eine 1 stehen das funktioniert soweit alles

also ich trage schonmal ein b ein und speicher es ab (dann könntest Du in B7 mal die 1 eintragen und es wird jetzt in Range ("AJ49:AJ64") überall die 1 stehen. die Zelle neben der 1 soll die Mail bekommen. das ganze ist natürlich variabel.

hoffe das ist jetzt gut genug erklärt

https://www.herber.de/bbs/user/168389.xlsx
Anzeige
AW: E-Mail automatisch versenden wenn Zelleninhalt durch Formel
28.03.2024 23:15:43
ralf_b
https://www.herber.de/bbs/user/168394.xlsm

das Change Makro reagiert jetzt auf B7, steht dort eine 1 wird sendemail aufgerufen , dort wird der Bereich AJ durchlaufen und geprüft ob dort eine 1 steht.

Ich bezweifele aber das der Bereich innerhalb einer Sekunde abgearbeitet werden kann.
AW: E-Mail automatisch versenden wenn Zelleninhalt durch Formel
29.03.2024 08:04:38
RenéS
OK vielen Dank erstmal, werde ich nach dem Urlaub mal testen.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige