Note: The other languages of the website are Google-translated. Back to English

Wie sende ich automatisch E-Mails basierend auf dem Zellenwert in Excel?

Angenommen, Sie möchten eine E-Mail über Outlook an einen bestimmten Empfänger senden, basierend auf einem angegebenen Zellenwert in Excel. Wenn beispielsweise der Wert von Zelle D7 in einem Arbeitsblatt größer als 200 ist, wird automatisch eine E-Mail erstellt. In diesem Artikel wird eine VBA-Methode vorgestellt, mit der Sie dieses Problem schnell lösen können.

Senden Sie automatisch E-Mails basierend auf dem Zellenwert mit VBA-Code


Senden Sie automatisch E-Mails basierend auf dem Zellenwert mit VBA-Code

Bitte gehen Sie wie folgt vor, um eine E-Mail basierend auf dem Zellenwert in Excel zu senden.

1. Im Arbeitsblatt müssen Sie E-Mails basierend auf ihrem Zellenwert senden (hier steht die Zelle D7), mit der rechten Maustaste auf die Registerkarte Blatt klicken und auswählen Code anzeigen aus dem Kontextmenü. Siehe Screenshot:

2. Beim Auftauchen Microsoft Visual Basic für Applikationen Fenster, bitte kopieren Sie den folgenden VBA-Code und fügen Sie ihn in das Blattcode-Fenster ein.

VBA-Code: Senden Sie E-Mails über Outlook basierend auf dem Zellenwert in Excel

Dim xRg As Range
'Update by Extendoffice 2018/3/7
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Target.Cells.Count > 1 Then Exit Sub
  Set xRg = Intersect(Range("D7"), Target)
    If xRg Is Nothing Then Exit Sub
    If IsNumeric(Target.Value) And Target.Value > 200 Then
        Call Mail_small_Text_Outlook
    End If
End Sub
Sub Mail_small_Text_Outlook()
    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 = "send by cell value test"
        .Body = xMailBody
        .Display   'or use .Send
    End With
    On Error GoTo 0
    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub

Anmerkungen:

1). Im VBA-Code, D7 und Wert> 200 sind die Zelle und der Zellenwert, auf deren Grundlage Sie E-Mails senden.
2). Bitte ändern Sie den E-Mail-Text nach Bedarf xMailBody Zeile im Code.
3). Ersetzen Sie die E-Mail-Adresse durch die E-Mail-Adresse des Empfängers in der Zeile .To = "E-Mail-Adresse".
4). Geben Sie die Cc- und Bcc-Empfänger nach Bedarf an .CC = "" und Bcc = "" .
5). Ändern Sie abschließend den E-Mail-Betreff in der Zeile .Subject = "Send by Cell Value Test".

3. Drücken Sie die Taste Andere + Q Tasten zusammen, um die zu schließen Microsoft Visual Basic für Applikationen Fenster.

Wenn der in Zelle D7 eingegebene Wert von nun an größer als 200 ist, wird in Outlook automatisch eine E-Mail mit den angegebenen Empfängern und dem angegebenen Text erstellt. Sie können auf klicken Senden Schaltfläche, um diese E-Mail zu senden. Siehe Screenshot:

Anmerkungen:

1. Der VBA-Code funktioniert nur, wenn Sie Outlook als E-Mail-Programm verwenden.

2. Wenn die in Zelle D7 eingegebenen Daten ein Textwert sind, wird auch das E-Mail-Fenster geöffnet.


Senden Sie E-Mails einfach über Outlook basierend auf den Feldern der in Excel erstellten Mailingliste:

Das E-Mails senden Nutzen von Kutools for Excel Hilft Benutzern beim Senden von E-Mails über Outlook basierend auf der in Excel erstellten Mailingliste.
Jetzt herunterladen und ausprobieren! (30-Tag kostenlose Loipe)


In Verbindung stehende Artikel:


Die besten Tools für die Office-Produktivität

Kutools for Excel löst die meisten Ihrer Probleme und erhöht Ihre Produktivität um 80%

  • Wiederverwendung: Schnell einfügen komplexe Formeln, Diagramme und alles, was du vorher benutzt hast; Zellen verschlüsseln mit Passwort; Mailingliste erstellen und E-Mails senden ...
  • Super Formelriegel (leicht mehrere Textzeilen und Formeln bearbeiten); Layout lesen (leichtes Lesen und Bearbeiten einer großen Anzahl von Zellen); In gefilterten Bereich einfügen...
  • Zellen / Zeilen / Spalten zusammenführen ohne Daten zu verlieren; Inhalt geteilter Zellen; Kombinieren Sie doppelte Zeilen / Spalten... doppelte Zellen verhindern; Bereiche vergleichen...
  • Wählen Sie Duplizieren oder Eindeutig Reihen; Wählen Sie Leere Zeilen (alle Zellen sind leer); Super Find und Fuzzy Find in vielen Arbeitsmappen; Zufällige Auswahl ...
  • Exakte Kopie Mehrere Zellen ohne Änderung der Formelreferenz; Referenzen automatisch erstellen zu mehreren Blättern; Aufzählungszeichen einfügen, Kontrollkästchen und mehr ...
  • Text extrahieren, Text hinzufügen, Nach Position entfernen, Leerzeichen entfernen;; Paging-Zwischensummen erstellen und drucken; Inhalt und Kommentare zwischen Zellen konvertieren...
  • Superfilter (Speichern und Anwenden von Filterschemata auf andere Blätter); Erweiterte Sortierung nach Monat / Woche / Tag, Häufigkeit und mehr; Spezialfilter fett, kursiv ...
  • Kombinieren Sie Arbeitsmappen und Arbeitsblätter;; Tabellen basierend auf Schlüsselspalten zusammenführen; Daten in mehrere Blätter aufteilen; Batch-Konvertierung von xls, xlsx und PDF...
  • Mehr als 300 leistungsstarke Funktionen. Unterstützt Office / Excel 2007-2021 und 365. Unterstützt alle Sprachen. Einfache Bereitstellung in Ihrem Unternehmen oder Ihrer Organisation. 30-tägige kostenlose Testversion mit allen Funktionen. 60 Tage Geld-zurück-Garantie.
kte tab 201905

Office Tab Bringt die Oberfläche mit Registerkarten in Office und erleichtert Ihnen die Arbeit erheblich

  • Aktivieren Sie das Bearbeiten und Lesen von Registerkarten in Word, Excel und PowerPoint, Publisher, Access, Visio und Project.
  • Öffnen und erstellen Sie mehrere Dokumente in neuen Registerkarten desselben Fensters und nicht in neuen Fenstern.
  • Steigert Ihre Produktivität um 50 % und reduziert jeden Tag Hunderte von Mausklicks für Sie!
officetab unten
Kommentare (306)
Bewertet 5 aus 5 · 1 Bewertungen
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Wie sollte der Code geändert werden, um ihn auf einen ganzen Zellbereich anzuwenden?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Liebe Debbie,
Bitte versuchen Sie den folgenden VBA-Code, um das Problem zu lösen.

Private Sub Worksheet_Change (ByVal-Ziel als Bereich)
Wenn Target.Cells.Count > 1, dann Exit Sub
If (Not Intersect(Target, Range("A1:D4")) Is Nothing) And (Target.Value > 200) Then
Rufen Sie Mail_small_Text_Outlook auf
End If
End Sub
Unter Mail_small_Text_Outlook()
Dim xOutApp als Objekt
Dim xOutMail als Objekt
Dim xMailBody als String
Set xOutApp = CreateObject("Outlook.Application")
Setze xOutMail = xOutApp.CreateItem(0)
xMailBody = "Hallo" & vbNewLine & vbNewLine & _
"Das ist Zeile 1" & vbNewLine & _
"Das ist Linie 2"
On Error Resume Next
Mit xOutMail
.To = "E-Mail-Adresse Ihres Empfängers"
.CC = ""
.BCC = ""
.Subject = "Send by Cell Value Test"
.Body = xMailBody
.Display 'oder verwenden Sie .Send
Ende mit
Bei Fehler GoTo 0
Setze xOutMail = nichts
Setze xOutApp = nichts
End Sub
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Ich habe Probleme, diesen Code zur Aufforderung zu bringen, wenn der Wert in der Zelle indirekt geändert wird. Zum Beispiel, wenn ich eine Summengleichung habe, die diesen Wert automatisch ändert. Wenn die Gleichung ausgeführt wird und der Wert über den eingestellten Wert geht, um die E-Mail zu veranlassen, geschieht dies nicht, es sei denn, ich ändere die Nummer physisch selbst. Gibt es eine Möglichkeit, die E-Mail-Eingabeaufforderung auch bei indirekter Änderung zu veranlassen?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Lieber Jordan,
Der folgende VBA-Code kann Ihnen helfen, das Problem zu lösen. Bitte vergessen Sie nicht, im Code die "E-Mail-Adresse" durch die E-Mail-Adresse des Empfängers zu ersetzen. Danke.

Private Sub Worksheet_Change (ByVal-Ziel als Bereich)
xRgPre als Bereich dimmen
On Error Resume Next
Wenn Target.Cells.Count > 1, dann Exit Sub
Setze xRg = Bereich ("D7")
Legen Sie xRgPre = xRg.Precedents fest
Wenn xRg.Wert > 200 Dann
Wenn Target.Address = xRg.Address Then
Rufen Sie Mail_small_Text_Outlook auf
ElseIf (Not xRgPre Is Nothing) And (Intersect(Target, xRgPre).Address = Target.Address) Then
Rufen Sie Mail_small_Text_Outlook auf
End If
End If
End Sub
Unter Mail_small_Text_Outlook()
Dim xOutApp als Objekt
Dim xOutMail als Objekt
Dim xMailBody als String
Set xOutApp = CreateObject("Outlook.Application")
Setze xOutMail = xOutApp.CreateItem(0)
xMailBody = "Hallo" & vbNewLine & vbNewLine & _
"Das ist Zeile 1" & vbNewLine & _
"Das ist Linie 2"
On Error Resume Next
Mit xOutMail
.To = "E-Mail-Adresse"
.CC = ""
.BCC = ""
.Subject = "Send by Cell Value Test"
.Body = xMailBody
.Display 'oder verwenden Sie .Send
Ende mit
Bei Fehler GoTo 0
Setze xOutMail = nichts
Setze xOutApp = nichts
End Sub
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Ich habe den vorgeschlagenen Code geändert, um zu versuchen, ihn für meine Anwendung zum Laufen zu bringen.
Geändert xRg = Range("C2:C40") und If xRg.Value = -1.

Das Problem, das ich habe, ist, dass immer eine Zelle geändert wird und solange eine der Zellen in meinem Bereich = -1 ist, wird Mail_small_Text_Outlook aufgerufen.
Ich versuche nur anzurufen, wenn eine Zelle in meinem Bereich indirekt auf -1 geändert wird.
Ich habe mich auch gefragt, ob und wie es möglich wäre, dass es zwei Kriterien erfüllt.
Überprüfen Sie beispielsweise Bereich A und Bereich B, und wenn sie die Kriterien erfüllen, rufen Sie die Funktion auf.

Vielen Dank im Voraus für die Hilfe. Ich bin neu in all dem, aber wenn ich diesen Thread durchlese, bin ich zu etwa 90% dort.


Private Sub Worksheet_Change (ByVal-Ziel als Bereich)
xRgPre als Bereich dimmen
On Error Resume Next
Wenn Target.Cells.Count > 1, dann Exit Sub
Setze xRg = Range("C2:C40")
Legen Sie xRgPre = xRg.Precedents fest
Wenn xRg.Value = -1 Then
Wenn Target.Address = xRg.Address Then
Rufen Sie Mail_small_Text_Outlook auf
ElseIf (Not xRgPre Is Nothing) And (Intersect(Target, xRgPre).Address = Target.Address) Then
Rufen Sie Mail_small_Text_Outlook auf
End If
End If
End Sub
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Ich habe diesen Code mit der einzigen Änderung verwendet, dass ich ihn auf eine ganze Spalte angewendet habe [Set xRg = Range("D4:D13")]. Jetzt wird das Ereignis immer dann ausgelöst, wenn eine Berechnung durchgeführt wird, unabhängig davon, ob das Ventil in Spalte D unter dem Zielwert liegt. Irgendeine Idee, warum das so ist?


Dim Xrg als Bereich
Private Sub Worksheet_Change (ByVal-Ziel als Bereich)
xRgPre als Bereich dimmen
On Error Resume Next
Wenn Target.Cells.Count > 1, dann Exit Sub
Setze Xrg = Range("D4:D13")
Setzen Sie xRgPre = Xrg.Precedents
Wenn Xrg.Wert < 1200 Dann
Wenn Target.Address = Xrg.Address Then
Rufen Sie Mail_small_Text_Outlook auf
ElseIf (Not xRgPre Is Nothing) And (Intersect(Target, xRgPre).Address = Target.Address) Then
Rufen Sie Mail_small_Text_Outlook auf
End If
End If
End Sub

Unter Mail_small_Text_Outlook()
Dim xOutApp als Objekt
Dim xOutMail als Objekt
Dim xMailBody als String
Set xOutApp = CreateObject("Outlook.Application")
Setze xOutMail = xOutApp.CreateItem(0)
xMailBody = "Hallo" & vbNewLine & _
"VBA testen" _
& vbNewLine & _
"Zeile 2."
On Error Resume Next
Mit xOutMail
.An = ""
.CC = ""
.BCC = ""
.Subject = "Automatischer E-Mail-Test"
.Body = xMailBody
.Anzeige
Ende mit
Bei Fehler GoTo 0
Setze xOutMail = nichts
Setze xOutApp = nichts

End Sub


Vielen Dank.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo

Ich habe Probleme, weil E-Mail-Empfänger immer wieder einzeln hinzugefügt werden müssen. Bitte leiten Sie an, ob dieser Funktion eine Liste von E-Mail-Empfängern hinzugefügt werden kann, damit die Funktion die E-Mail-Adresse aus der Liste der bereitgestellten E-Mail-Adressen auswählt oder die Liste hochlädt und die Funktion die bereits erstellte E-Mail an den gewünschten Empfänger sendet.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Lieber Heinrich,
Der folgende VBA-Code kann Ihnen helfen, das Problem zu lösen. Bitte platzieren Sie das VBA-Skript in Ihrem Arbeitsblattmodul. Wenn der Wert in der angegebenen Zelle die Bedingung erfüllt, wird ein Kutools for Excel-Dialogfeld angezeigt. Bitte wählen Sie die Zellen aus, die die E-Mail-Adressen der Empfänger enthalten, und klicken Sie dann auf die Schaltfläche OK. Dann werden E-Mails mit bestimmten Empfängern geöffnet. Bitte senden Sie sie nach Bedarf.

Private Sub Worksheet_Change (ByVal-Ziel als Bereich)
Wenn Target.Cells.Count > 1, dann Exit Sub
Setze xRg = Bereich ("D7")
Wenn xRg = Target und Target.Value > 200 Then
Rufen Sie Mail_small_Text_Outlook auf
End If
End Sub
Unter Mail_small_Text_Outlook()
Dim xOutApp als Objekt
Dim xOutMail als Objekt
Dim xMailBody als String
Dim xRgMsg als Bereich
Dim xCell As Range
Set xRgMsg = Application.InputBox("Bitte wählen Sie die Adresszellen aus:", "Kutools for Excel", , , , , , 8)
xMailBody = "Hallo" & vbNewLine & vbNewLine & _
"Das ist Zeile 1" & vbNewLine & _
"Das ist Linie 2"
On Error Resume Next
Für jede xCell in xRgMsg
Set xOutApp = CreateObject("Outlook.Application")
Setze xOutMail = xOutApp.CreateItem(0)
Mit xOutMail
.To = xCell.Wert
.CC = ""
.BCC = ""
.Subject = "Send by Cell Value Test"
.Body = xMailBody
.Display 'oder verwenden Sie .Send
Ende mit
xOutApp = Nichts
xOutMail = Nichts
Weiter
Bei Fehler GoTo 0
End Sub
Dieser Kommentar wurde vom Moderator auf der Website minimiert
wird es automatisch versendet, ohne manuelle Unterbrechung
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Liebe Brahma,
Wenn Sie die E-Mail ohne Anzeige direkt versenden möchten, ersetzen Sie bitte im obigen VBA-Code die Zeile „.Display“ durch „.Send“.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo, ich habe das gleiche Skript, aber es funktioniert nicht. Bitte helfen Sie mir im 1. Teil

Dim xRg als Bereich

Private Sub Worksheet_Change (ByVal-Ziel als Bereich)
Wenn Target.Cells.Count > 1, dann Exit Sub
Setze xRg = Bereich ("D7")
Wenn xRg = Target und Target.Value = 200 Then
Rufen Sie Mail_small_Text_Outlook auf
End If

End Sub
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Liebes Basilikum,
Gibt es eine Warnung, wenn der Code ausgeführt wird?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo, wie würden Sie diesen Code ändern, um zu prüfen, ob eine Gruppe von Zellen die Zeichenfolge "Keine Übereinstimmung" enthält, und eine E-Mail senden, wenn dies der Fall ist.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Lieber Jose,
Bitte versuchen Sie es mit dem folgenden VBA-Code. Wenn Sie den Code ausführen, wird ein Dialogfeld angezeigt. Wählen Sie den Bereich aus, in dem Sie nach Zeichenfolgen suchen möchten, und klicken Sie auf die Schaltfläche OK. Wenn die Zeichenfolge nicht vorhanden ist, erhalten Sie ein Eingabeaufforderungsdialogfeld. Wenn die Zeichenfolge im Bereich vorhanden ist, wird eine E-Mail mit angegebenem Empfänger, Betreff und Text angezeigt.

Sub SendenE-Mail()
Dimme ich so lange
Dim J so lang
Dim xRg als Bereich
Dim xArr
Dim xOutApp als Objekt
Dim xOutMail als Objekt
Dim xMailBody als String
Dim xFlag As Boolean
On Error Resume Next
Set xRg = Application.InputBox("Bitte Bereich auswählen", "Kutools for Excel", Selection.Address, , , , , 8)
Wenn xRg nichts ist, dann beenden Sie Sub
xArr = xRg.Wert
xFlag = Falsch
Für I = 1 bis UBound(xArr)
Für J = 1 nach UBound(xArr, 2)
Wenn xArr(I, J) = "No Match" Then
xFlag = True
End If
Weiter
Weiter
Wenn xFlag Dann
Set xOutApp = CreateObject("Outlook.Application")
Setze xOutMail = xOutApp.CreateItem(0)
xMailBody = "Hallo" & vbNewLine & vbNewLine & _
"Das ist Zeile 1" & vbNewLine & _
"Das ist Linie 2"
Mit xOutMail
.To = "E-Mail-Adresse"
.CC = ""
.BCC = ""
.Betreff = "Übereinstimmung"
.Body = xMailBody
.Display 'oder verwenden Sie .Send
Ende mit
sonst
MsgBox "Keinen übereinstimmenden Wert gefunden", vbInformation, "KuTools for Excel"
End If
End Sub
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Wie kann ich diesen Code ändern, um die Noten der Schüler an die Eltern zu senden? Wobei Spalte A die Note und Spalte B die übergeordnete E-Mail ist. Ich möchte eine E-Mail für jeden Schüler mit einer F als Note füllen.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Lieber Frank,
Der folgende VBA-Code kann Ihnen helfen, das Problem zu lösen. Danke.

Unter Mail_small_Text_Outlook()
Dim xRg als Bereich
Dimme ich so lange
Dim xRows so lang
Dim xVal als Zeichenfolge
Dim xOutApp als Objekt
Dim xOutMail als Objekt
Dim xMailBody als String
On Error Resume Next
Set xRg = Application.InputBox("Bitte wählen Sie die Notenspalte und die E-Mail-Spalte (zwei Spalten)", "Kutools for Excel", Selection.Address, , , , , 8)
Wenn xRg nichts ist, dann beenden Sie Sub
xRows = xRg.Rows.Count
Setze xRg = xRg(2)
Für I = 1 bis xRows
xVal = xRg.Offset(I, -1).Text
Wenn xVal = "F" Dann
Set xOutApp = CreateObject("Outlook.Application")
Setze xOutMail = xOutApp.CreateItem(0)
xMailBody = "Hallo" & vbNewLine & vbNewLine & _
„Das ist die Note Ihres Kindes“ & xRg.Offset(I, -1).Text
Mit xOutMail
.to = xRg.Offset(I, 0).Text
.Subject = "Send by Cell Value Test"
.Body = xMailBody
.Display 'oder verwenden Sie .Send
Ende mit
Bei Fehler GoTo 0
Setze xOutMail = nichts
Setze xOutApp = nichts
End If
Weiter
End Sub
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Ich habe bereits eine Liste mit E-Mail-Adressen in einer Excel-Datei. Wie kann ich den Code ändern, um automatisch die E-Mail-Adresse der Person auszuwählen, wenn ihre Zelle D7> 200 ist?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Guten Tag,
Der folgende VBA-Code kann Ihnen helfen, das Problem zu lösen. Bitte platzieren Sie das VBA-Skript in Ihrem Arbeitsblattmodul. Wenn der Wert in der angegebenen Zelle die Bedingung erfüllt, wird ein Kutools for Excel-Dialogfeld angezeigt. Bitte wählen Sie die Zellen aus, die die E-Mail-Adressen der Empfänger enthalten, und klicken Sie dann auf die Schaltfläche OK. Dann werden E-Mails mit bestimmten Empfängern geöffnet. Bitte senden Sie sie nach Bedarf.

Private Sub Worksheet_Change (ByVal-Ziel als Bereich)
Wenn Target.Cells.Count > 1, dann Exit Sub
Setze xRg = Bereich ("D7")
Wenn xRg = Target und Target.Value > 200 Then
Rufen Sie Mail_small_Text_Outlook auf
End If
End Sub
Unter Mail_small_Text_Outlook()
Dim xOutApp als Objekt
Dim xOutMail als Objekt
Dim xMailBody als String
Dim xRgMsg als Bereich
Dim xCell As Range
Set xRgMsg = Application.InputBox("Bitte wählen Sie die Adresszellen aus:", "Kutools for Excel", , , , , , 8)
xMailBody = "Hallo" & vbNewLine & vbNewLine & _
"Das ist Zeile 1" & vbNewLine & _
"Das ist Linie 2"
On Error Resume Next
Für jede xCell in xRgMsg
Set xOutApp = CreateObject("Outlook.Application")
Setze xOutMail = xOutApp.CreateItem(0)
Mit xOutMail
.To = xCell.Wert
.CC = ""
.BCC = ""
.Subject = "Send by Cell Value Test"
.Body = xMailBody
.Display 'oder verwenden Sie .Send
Ende mit
xOutApp = Nichts
xOutMail = Nichts
Weiter
Bei Fehler GoTo 0
End Sub
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Ich habe Probleme beim Versenden von E-Mails über Outlook. Ich erhalte die Fehlermeldung „Ein Programm versucht, in Ihrem Namen eine E-Mail zu senden. Wenn dies unerwartet ist, verweigern Sie dies bitte und überprüfen Sie, ob Ihre Antivirensoftware auf dem neuesten Stand ist.“
Bitte helfen Sie, da ich es nicht automatisieren kann.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Entschuldigung Majank,
Der Code funktioniert in meinem Fall gut. Es scheint, dass in Ihrem Outlook etwas über die Funktion "Senden im Namen" konfiguriert ist. Bitte überprüfen Sie es.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo, welchen Code würde ich verwenden, wenn ich versuche, eine E-Mail an einen Manager zu senden, der eine Liste der Früchte hat, die einmal pro Monat eine Menge von > 200 hat (basierend auf Ihrem Beispiel) oder bald abläuft (basierend auf Daten)
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Good Day
Möglicherweise ist die Methode in diesem Artikel "Wie sende ich eine E-Mail, wenn das Fälligkeitsdatum in Excel eingehalten wurde?" kann dir helfen.
Bitte folgen Sie diesem Link: https://www.extendoffice.com/documents/excel/4664-excel-send-email-if-due-date-has-been-met.html
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Wie kann ich den Code bearbeiten, um eine E-Mail basierend auf einem Datum in der Zelle zu senden. Zum Beispiel muss ein Dokument alle 15 Monate überprüft werden, und ich möchte nach 12 Monaten eine E-Mail an eine E-Mail-Adresse versenden, in der steht, dass das Dokument überprüft werden muss. Ich habe es jetzt geschafft, eine E-Mail automatisch zu senden, indem ich .Display in .Send ändere, und es funktioniert wie geschrieben großartig, aber was muss ich ändern, um eine Datumsfunktion anstelle einer ganzen Zahl zu verwenden??
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Wie können Sie mehrere Bereiche zu "Set xRg = Range("D7")" hinzufügen? Ich möchte es bearbeiten und Range ("D7: F7") hinzufügen. Ich erhalte jedoch einen Fehler von Run Time Error 13, Type Mismatch, und er bringt mich zu If xRg = Target And Target.Value > 2 Then.


Wie kann ich dieses Problem lösen?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Guten Tag,
Bitte versuchen Sie den folgenden VBA-Code, um das Problem zu lösen.

Private Sub Worksheet_Change (ByVal-Ziel als Bereich)
Wenn Target.Cells.Count > 1, dann Exit Sub
If (Not Intersect(Target, Range("D7:F7")) Is Nothing) And (Target.Value > 200) Then
Rufen Sie Mail_small_Text_Outlook auf
End If
End Sub
Unter Mail_small_Text_Outlook()
Dim xOutApp als Objekt
Dim xOutMail als Objekt
Dim xMailBody als String
Set xOutApp = CreateObject("Outlook.Application")
Setze xOutMail = xOutApp.CreateItem(0)
xMailBody = "Hallo" & vbNewLine & vbNewLine & _
"Das ist Zeile 1" & vbNewLine & _
"Das ist Linie 2"
On Error Resume Next
Mit xOutMail
.To = "E-Mail-Adresse Ihres Empfängers"
.CC = ""
.BCC = ""
.Subject = "Send by Cell Value Test"
.Body = xMailBody
.Display 'oder verwenden Sie .Send
Ende mit
Bei Fehler GoTo 0
Setze xOutMail = nichts
Setze xOutApp = nichts
End Sub
Dieser Kommentar wurde vom Moderator auf der Website minimiert
funktionierte perfekt.. Danke..:):)
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Es funktioniert bei mir nicht, da der Wert in D7 das Ergebnis eines Formulars ist. Was ist, wenn Zelle D7 eine Formel enthält, zB D7 =2*120? Es erfüllt immer noch die Bedingung, aber es passiert nichts. Bitte helfen Sie
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Wie kann man die Ausführung von Code stoppen, dh die E-Mail nicht auffordern, wenn die Bedingung nicht erfüllt ist?

Selbst wenn D7 < 200, bekomme ich immer noch die E-Mail aufgefordert.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Guten Tag,
Der Code wird in der Post mit dem gelösten Problem aktualisiert. Danke für deinen Kommentar.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hi

Vielen Dank für die Veröffentlichung dieses VBA-Codes und der Anweisungen. Als ich es fand, fühlte ich mich, als hätte ich im Lotto gewonnen. Ich stecke jedoch an etwas fest, also hoffe ich, dass Sie helfen können (ich bin neu in VBA, habe nur ein sehr grundlegendes Verständnis).

Ich habe den Code kopiert und die Zelle und den Zellwert geändert, um aus einem Bereich auszuwählen, wenn ein Kriterium erfüllt ist. Ich habe es ausprobiert und getestet und es funktioniert und ich habe eine E-Mail an Outlook erhalten, basierend auf den Kriterien.

1) Ich kann jedoch nicht herausfinden, wie der VBA-Code automatisch ausgeführt werden kann, wenn ich das Excel-Arbeitsblatt öffne, anstatt auf die VBA-Anwendung klicken und Ausführen auswählen zu müssen. Könnten Sie uns mitteilen, ob es eine zusätzliche Aufforderung zur Eingabe in den obigen VBA-Code gibt, die dies tut, oder ob dies separat erfolgen muss.

2) Gibt es auch eine Möglichkeit, den VBA-Code zu erhalten, um eine E-Mail an eine Person zu senden, wenn das Fälligkeitsdatum für einen bestimmten Artikel ja ist, wie im Beispiel unten gezeigt.
ausgeblendete E-Mail-Spalte
Name

Verfahren
Verfahren Nr. 1 Fälligkeitsdatum ja
Verfahren Nr. 2 Fälligkeitsdatum Nr

Ich hätte zahlreiche Personen in der Tabelle (horizontal hintereinander) und „Ja“ könnte für verschiedene überfällige Verfahren hervorgehoben werden (vertikal in Spalte A aufgeführt. Gibt es eine Möglichkeit, einen VBA-Code zu erstellen, der für so etwas ausgeführt wird? wenn „Ja“ für „Person 1“, dann E-Mail an „Person 1“ mit „Verfahren Nr. #“ (oder Nummern) und Fälligkeitsdatum(en).

Ich hätte nichts dagegen, wenn ich für jede Person einen separaten VBA-Code festlegen müsste, solange er eine E-Mail mit allen für diese Person überfälligen Dokumenten und den Fälligkeitsdaten sendet.

Hoffe, du kannst helfen
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Liebe Ann,
Bitte versuchen Sie den folgenden VBA-Code. Danke für deinen Kommentar.

Unter Mail_small_Text_Outlook()
Dim xRg als Bereich
Dim xCell As Range
Dimme ich so lange
Dim xRows so lang
Dim xCols so lange
Dim xVal als Zeichenfolge
Dim xOutApp als Objekt
Dim xOutMail als Objekt
Dim xMailBody als String
On Error Resume Next
Set xRg = Application.InputBox("Wählen Sie den Bereich aus, der den Zellenwert enthält, basierend auf dem Sie E-Mails senden werden:", "Kutools for Excel", Selection.Address, , , , , 8)
Wenn xRg nichts ist, dann beenden Sie Sub
xRows = xRg.Rows.Count
xSpalten = xRg.Spalten.Anzahl
Für I = 1 bis xRows
Setze xCell = xRg(I, xCols)
Wenn xCell.Value = "Yes" Then
Set xOutApp = CreateObject("Outlook.Application")
Setze xOutMail = xOutApp.CreateItem(0)
xMailBody = "Hallo" & vbNewLine & vbNewLine & _
"Das sind Ihre Informationen: " & vbNewLine & xCell.Offset(0, -1).Text & vbNewLine & xCell.Offset(0, -2).Text
Mit xOutMail
.To = xCell.Offset(0, -4).Text
.Subject = "Send by Cell Value Test"
.Body = xMailBody
.Display 'oder verwenden Sie .Send
Ende mit
Bei Fehler GoTo 0
Setze xOutMail = nichts
Setze xOutApp = nichts
End If
Weiter
End Sub
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Kristall,

Dies ersetzt den folgenden Code:

E-Mail-Adresse ()

Dim xRg als Bereich

Dim xRgEach As Range

Dim xEmail_Subject, xEmail_Send_Form usw.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Wo genau fügen wir diesen Code ein?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Guten Tag,
Sie müssen den Code in das Codefenster des Arbeitsblatts einfügen.
Öffnen Sie das Microsoft Visual Basic for Applications-Fenster, doppelklicken Sie auf den Blattnamen im linken Bereich, um den Code-Editor zu öffnen.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo,


Ich habe derzeit ein wenig Probleme mit der Codierung (neu dabei - habe möglicherweise mehr abgebissen, als ich kauen kann)


Ich habe derzeit eine Tabelle mit dem Folgenden, dass ich Hilfe brauche, um E-Mails für Fehler zu automatisieren und zu senden, die sich in unseren Immobilien für unser Geschäft befinden


Ich brauche derzeit einen Code, der die folgenden Daten verwendet:


1) Eine Adresse und das Problem (2 "allgemeine" Zellen, die über ((In Zelle D1))" = =CONCAT(B1," "C1,)" zusammengeführt wurden
Die Adresse in B1 ist immer gleich (mehr oder weniger)
Wohingegen sich C1 abhängig vom Fehler in der Immobilie immer ändert.


2) Eine E-Mail, die von derselben E-Mail-Adresse gesendet werden soll (kann ich $E$1 verwenden oder muss ich zum Beispiel E1 - E1 verwenden) oder kann ich einfach "TheEmailAdress@.co.uk" in die Codezeile eingeben


3) Der E-Mail-Text, der ähnlich wie unter Punkt 1) ausgefüllt werden soll ...... ((In Zelle F1)) " =CONCAT(G1," ",H1)
Diese werden sich ständig ändern, da sie das Unternehmen repräsentieren (G1) und was sie tun, reparieren, zitieren usw. (H1)

4) Der Auslöser zum Abschicken der E-Mail wäre ich die Nummer 7 , das Blatt wird täglich aktualisiert (7 Tage in der Woche)
Als solches brauche ich den Auslöser, um die E-Mail an Tag 7 zu senden, aber nicht ständig wie an Tag 8, 9, 10+ ect. und nicht vor wie 1-6, das wäre in A4 : A 100+ (da wir ständig erweitern


4) Ich habe kleine Ausschnitte von anderen Benutzern verwendet, die erwähnt haben, dass sie eine Liste für den Auslöser zum Senden der E-Mail verwenden, aber ich bin mir nicht sicher, ob sie zu 100 % korrekt war, aber ich würde sie brauchen, um alle Collum A zu scannen ... A4: A100
und wenn es 47 Zellen gibt, die nur „7“ enthalten, werden 47 E-Mails gesendet


Vielen Dank fürs Lesen und ich hoffe ihr könnt helfen :)
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Lieber Martin,
Tut mir leid, kann dabei nicht helfen.
Sie können Ihre Frage in unserem Forum stellen: https://www.extendoffice.com/forum.html um mehr Excel-Unterstützung von unserem technischen Personal zu erhalten.
Danke für deinen Kommentar.

Mit freundlichen Grüßen,
Kristall
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo,


Was wäre, wenn ich die E-Mail basierend auf dem Wort „abgeschlossen“ in Spalte L senden wollte?
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Lieber Jesse,
Der folgende VBA-Code kann Ihnen helfen, das Problem zu lösen. Danke für deinen Kommentar.

Private Sub Worksheet_Change (ByVal-Ziel als Bereich)
Wenn Target.Cells.Count > 1, dann Exit Sub
If (Not Intersect(Target, Range("L:L")) Is Nothing) And (Target.Value = "completed") Then
Rufen Sie Mail_small_Text_Outlook auf
End If
End Sub
Unter Mail_small_Text_Outlook()
Dim xOutApp als Objekt
Dim xOutMail als Objekt
Dim xMailBody als String
Set xOutApp = CreateObject("Outlook.Application")
Setze xOutMail = xOutApp.CreateItem(0)
xMailBody = "Hallo" & vbNewLine & vbNewLine & _
"Das ist Zeile 1" & vbNewLine & _
"Das ist Linie 2"
On Error Resume Next
Mit xOutMail
.To = "E-Mail-Adresse Ihres Empfängers"
.CC = ""
.BCC = ""
.Subject = "Send by Cell Value Test"
.Body = xMailBody
.Display 'oder verwenden Sie .Send
Ende mit
Bei Fehler GoTo 0
Setze xOutMail = nichts
Setze xOutApp = nichts
End Sub
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo,
Ich möchte, dass Outlook nur erscheint, wenn die Daten, die ich in den Bereich ("D7: F7") eingefügt habe, mindestens 1 Null oder ein Leerzeichen enthalten.
Ich habe die Zeile „If Target.Cells.Count > 1 Then Exit Sub“ entfernt und jetzt startet Outlook immer, wenn ich eine beliebige Gruppe von Werten in die Zellen D7: F7 einfüge.

Hilfe.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Liebe Jan,
Das folgende Skript kann Ihnen helfen, das Problem zu lösen. Danke für deinen Kommentar.

Private Sub Worksheet_Change (ByVal-Ziel als Bereich)
Dim xOutApp als Objekt
Dim xOutMail als Objekt
Dim xMailBody als String
On Error Resume Next
If Target.Address = Range("D7:F7").Address Then
Mit Application.WorksheetFunction
If .CountIf(Target, "") > 0 Oder .CountIf(Target, 0) > 0 Then
Set xOutApp = CreateObject("Outlook.Application")
Setze xOutMail = xOutApp.CreateItem(0)
Mit xOutMail
.To = "E-Mail-Adresse"
.CC = ""
.BCC = ""
.Subject = "Send by Cell Value Test"
.Body = "Hallo"
.Display 'oder verwenden Sie .Send
Ende mit
Bei Fehler GoTo 0
Setze xOutMail = nichts
Setze xOutApp = nichts
End If
Ende mit
End If
End Sub
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Also habe ich Ihre Bearbeitung verwendet, um Zellbereiche einzuschließen, aber (wenn wir das Arbeitsblattbeispiel verwenden) habe ich mich gefragt, wie ich die Obstsorte, das Datum und die Menge aus dem Arbeitsblatt in die HTML-E-Mail einfügen kann, wenn sie den Kriterien entsprechen eine E-Mail generieren lassen. So würde es heißen

"Hi,"

Fruchtname aus Zelle "Muss nachbestellt werden, da ab Bestelldatum: " Bestelldatum aus Zelle "Wir haben diese Menge:" Menge aus Zelle.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo Noemi,
Bitte versuchen Sie es mit diesem VBA-Skript.

Private Sub Worksheet_Change (ByVal-Ziel als Bereich)
Dim xRg als Bereich
Dim I, J, K so lang
Dim xOutApp als Objekt
Dim xOutMail als Objekt
Dim xMailBody als String
On Error Resume Next
Wenn Target.Address = Range("D7").Address Then
Mit Application.WorksheetFunction
If IsNumeric(Target.Value) And Target.Value > 200 Then
Set xRg = Application.InputBox("Bitte wählen Sie den Zellbereich aus, der im Mailtext angezeigt werden soll:", "KuTools for Excel", Selection.Address, , , , , 8)
Wenn xRg nichts ist, dann beenden Sie Sub
Für I = 1 bis xRg.Rows.Count
Für J = 1 bis xRg.Rows(I).Columns.Count
Für K = 1 bis xRg.Rows(I).Columns(J).Count
xMailBody = xMailBody & " " & xRg.Rows(I).Columns(J).Cells(K).Text
Weiter
Weiter
xMailBody = xMailBody & vbNewLine
Weiter
Set xOutApp = CreateObject("Outlook.Application")
Setze xOutMail = xOutApp.CreateItem(0)
Mit xOutMail
.To = "E-Mail-Adresse"
.CC = ""
.BCC = ""
.Subject = "Send by Cell Value Test"
.Body = "Hallo" & vbNewLine & xMailBody
.Display 'oder verwenden Sie .Send
Ende mit
Bei Fehler GoTo 0
Setze xOutMail = nichts
Setze xOutApp = nichts
End If
Ende mit
End If
End Sub
Dieser Kommentar wurde vom Moderator auf der Website minimiert
hallo kristall
Vielen Dank für Ihre Codes. Wenn möglich, senden Sie bitte die Codes für die unten angegebenen Details

Wenn wir 8 bis 9 Spalten haben, die verschiedene Arten von Ablaufen verwenden, wie z.

Wie unser Datumsblatt ist bei mehr als 300 Mitarbeitern abgelaufen und das Ablaufdatum mit in 15 Tagen in roter Farbe und E-Mail-Benachrichtigung sollte gesendet werden.

tun Sie bitte das Notwendige

Vielen Dank im Voraus
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo,
Wir haben einen Artikel „Wie sende ich eine E-Mail, wenn das Fälligkeitsdatum in Excel eingehalten wurde?“ veröffentlicht.
Sie können sehen, ob es Antworten in diesem Artikel gibt. Bitte folgen Sie diesem Link, um den Artikel zu öffnen: https://www.extendoffice.com/documents/excel/4664-excel-send-email-if-due-date-has-been-met.html
Danke.
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo, wenn ich eine E-Mail aus einer Liste senden wollte, anstatt die tatsächliche E-Mail-Adresse in den Code einzufügen, ist das möglich? Danke
Dieser Kommentar wurde vom Moderator auf der Website minimiert
Hallo,
Bitte versuchen Sie es mit dem folgenden VBA-Code. Wenn die angegebene Zelle die Bedingung erfüllt, wird ein Dialogfeld angezeigt. Bitte wählen Sie die Zelle aus, die die E-Mail-Adresse enthält, an die Sie eine E-Mail senden. Hoffe es kann helfen. Danke.

Private Sub Worksheet_Change (ByVal-Ziel als Bereich)
Wenn Target.Cells.Count > 1, dann Exit Sub
Setze xRg = Bereich ("D7")
Wenn xRg = Target und Target.Value > 200 Then
Rufen Sie Mail_small_Text_Outlook auf
End If
End Sub
Unter Mail_small_Text_Outlook()
Dim xOutApp als Objekt
Dim xOutMail als Objekt
Dim xMailBody als String
Dim xRgMsg als Bereich
Dim xCell As Range
Set xRgMsg = Application.InputBox("Bitte wählen Sie die Adresszellen aus:", "Kutools for Excel", , , , , , 8)
xMailBody = "Hallo" & vbNewLine & vbNewLine & _
"Das ist Zeile 1" & vbNewLine & _
"Das ist Linie 2"
On Error Resume Next
Für jede xCell in xRgMsg
Set xOutApp = CreateObject("Outlook.Application")
Setze xOutMail = xOutApp.CreateItem(0)
Mit xOutMail
.To = xCell.Wert
.CC = ""
.BCC = ""
.Subject = "Send by Cell Value Test"
.Body = xMailBody
.Display 'oder verwenden Sie .Send
Ende mit
xOutApp = Nichts
xOutMail = Nichts
Weiter
Bei Fehler GoTo 0
End Sub
Es sind noch keine Kommentare vorhanden
Mehr laden
Hinterlassen Sie Ihre Kommentare
Als Gast posten
×
Bewerte diese Nachricht:
0   Figuren
Vorgeschlagene Standorte

Folgen Sie uns

Copyright © 2009 - www.extendoffice.com. | Alle Rechte vorbehalten. Unterstützt von ExtendOffice. | Sitemap
Microsoft und das Office-Logo sind Marken oder eingetragene Marken der Microsoft Corporation in den USA und / oder anderen Ländern.
Geschützt durch Sectigo SSL