Freitag, März 01 2019
  0 Antworten
  3.2K Besuche
0
Bewertungen
Rückgängig machen
Hallo,
Ich bin neu in VBA. Ich habe einen Code geschrieben, um eine E-Mail zu senden, wenn sich in Spalte F ein Zellenwert ändert, und der Code funktioniert hervorragend. Ich möchte jedoch sicherstellen, dass die Arbeitsmappe gespeichert wird, bevor ich die E-Mail versende. Der Textkörper der E-Mail muss den Referenzzellenwert enthalten, bei dem es sich um den Wert aus Spalte A der Zeile „Wert geändert“ handelt. Bitte verwenden Sie nicht msg, da dies mit der Arbeitsmappe nicht funktioniert. Die Arbeitsmappe verfügt über ein Formular und lädt den Eingabewert in die angegebenen Zellen. Der Code funktioniert gut mit dem Formular. Aber wenn jemand in das Blatt geht und den Wert manuell aktualisiert, wird die E-Mail an die Benutzer gesendet, was ich nicht möchte, bis die Datei gespeichert ist. Bitte helfen Sie! Vielen Dank im Voraus.

Private Sub Worksheet_Change (ByVal-Ziel als Bereich)
Dimmen Sie s1, s2, s3, s4, s5, s6 als Bereich
Setze s1 = Range("F1310:F1334")
Setze s2 = Range("F1426:F1450")
Setze s3 = Range("F1339:F1363")
Setze s4 = Range("F1455:F1479")
Setze s5 = Range("F1368:F1392")
Setze s6 = Range("F1397:F1421")
On Error Resume Next
Wenn Target.Cells.Count > 1, dann Exit Sub
'finde den in Spalte F geänderten Wert
Wenn Intersect(Target, Union(s1, s2, s3, s4, s5, s6)) nichts ist, dann beenden Sie Sub
If IsNumeric(Target.Value) And Target.Value <> "" Then
Dim xOutApp als Objekt
Dim xOutMail als Objekt
Dim xMailBody als String
Dimmen Sie xMailText als String
Set xOutApp = CreateObject("Outlook.Application")
Setze xOutMail = xOutApp.CreateItem(0)
'Indexwert aus Spalte A der Zeile, in die der Wert geändert wurde, ist im E-Mail-Text enthalten
xMailText = Target.Offset(, -5).Value
xMailBody = "Hallo" & vbNewLine & vbNewLine & _
„Rechnung erhalten für“ & xMailText & vbNewLine & vbNewLine & _
„Danke“ & vbNewLine & vbNewLine & _
„Herr J“
On Error Resume Next
Mit xOutMail
.An = ""
.CC = ""
.BCC = ""
.Subject = „Rechnung erhalten“
.Body = xMailBody
.Senden
Ende mit
Bei Fehler GoTo 0
Setze xOutMail = nichts
Setze xOutApp = nichts
End If
End Sub
Es gibt keine Antworten für diesen Eintrag gemacht.