Senden bestimmter E-Mails basierend auf Zellenwerten in Excel 2016?

726
Wen Yao Wen Yao

Gibt es eine effizientere Methode, um E-Mail-Erinnerungen an einen Benutzer zu senden, basierend auf einem Zellenwert, der sich häufig ändert? Hier ist der Code von dem, an dem ich arbeite, damit Sie den Kontext der Frage verstehen können.

 'This is the main function  Sub notify()  Dim rng As Range For Each rng In Range("F3:F14") If (rng.Value = 1) Then Call mymacro End If Next rng  End Sub -----------------------------------------------------------------------  'This is the function that sends an email when called by the main function  Private Sub mymacro()  Dim xOutApp As Object Dim xOutMail As Object Dim xMailBody As String Set xOutApp = CreateObject("Outlook.Application") Set xOutMail = xOutApp.CreateItem(0) xMailBody = "Hi there" & vbNewLine & vbNewLine & _ "This is line 1" & vbNewLine & _ "This is line 2" On Error Resume Next With xOutMail .To = "email address" .CC = "" .BCC = "" .Subject = "test succeeded" .Body = xMailBody .Display 'or use .Send End With On Error GoTo 0 Set xOutMail = Nothing Set xOutApp = Nothing End Sub 

Erläuterung:

Die beiden obigen Codes befinden sich im selben Modul meines Arbeitsblatts. Der Code funktionierte absolut einwandfrei, um eine E-Mail (über Outlook) an den Benutzer zu senden. Wenn beispielsweise F3 und F7 als wahr ausgewertet werden, werden zwei E-Mails an den Benutzer gesendet.

Nun, hier ist das Problem, wie kann ich meinen Code bearbeiten, so dass, wenn dieselbe Situation eintritt (F3 und F7 werden als wahr ausgewertet), die beiden an den Benutzer gesendeten E-Mails angeben, welche Zelle als wahr ausgewertet wird. Mit anderen Worten, jede E-Mail, die gesendet wird, unterscheidet sich in der Angabe, welche Zelle als wahr bewertet wurde.

Kann der Code auch erneut ausgeführt werden, wenn die Daten in der Zelle ("F3: F14") aktualisiert werden?

Ich persönlich habe keinen VBA-Hintergrund, also wäre es schön, wenn Sie das in Laienbezeichnungen erklären könnten. Vielen Dank! Schätze es wirklich! :)

2

1 Antwort auf die Frage

0
ProfoundlyOblivious

Wenn man bedenkt, dass dies vor 2 Jahren gefragt wurde, bin ich sicher, dass Sie das Problem entweder gelöst oder weitergezogen haben. Dies stand aber ganz oben auf der unbeantworteten Liste, also ... hier geht's!

Gibt es einen effizienteren Weg, um die erste Frage zu beantworten? Der von Ihnen freigegebene Teil scheint manuell ausgeführt zu werden, dh das Programm wird nur ausgeführt, wenn Sie eine Aktion ausführen. Ich würde versuchen, diese Aufgabe mit einem ereignisgesteuerten Prozess zu automatisieren. Dies kann auf viele verschiedene Arten erfolgen, und ich muss mehr über Ihren Workflow erfahren, um eine erhebliche Effizienz zu erzielen.

Und die zweite Frage zum Ändern der E-Mail. Arten einer offenen Frage unter Berücksichtigung des aktuellen Status des Codes. Die kurze einfache Erklärung besteht darin, den Wert der Zellen in einer oder zwei Variablen zu speichern und diese Variable dann in Ihrer E-Mail zu verwenden.

Wenn Sie beispielsweise eine Variable mit dem fürchterlichen Namen variableX hatten und diese Variable den Bereich von F3 enthielt, könnte Ihre E-Mail variableX verwenden.

Eine einfache Änderung, um die Informationen hinzuzufügen:

.Subject = "The cell at " & variableX.address & " is " & variableX. value & " test succeeded"