Microsoft Excel

Herbers Excel/VBA-Archiv

Zeilenumbruch im String


Betrifft: Zeilenumbruch im String von: Anna
Geschrieben am: 28.11.2017 13:34:41

Hallo,

ich hoffe Ihr könnt mir weiterhelfen. Ich sitze gerade an einem Makro, dass aus einer EXCEL-Datei heraus eine E-Mail versenden soll. Die Anrede sowie die E-Mail-Adressen stehen in Zellen auf dem Deckblatt. Jede Adresse steht in einer extra Zeile.

Die Schleife für die E-Mail-Adressen funktioniert wunderbar, aber mit der Schleife, die die Anrede der E-Mail füllen soll, habe ich so meine Probleme: Auf die Anrede soll immer ein Zeilenumbruch folgen (Anrede 1, Zeilenumbruch, Anrede 2, Zeilenumbruch, usw.).

Das Skript funktioniert auch, ich habe nur das Problem, dass es im Testlauf so aussieht, dass er die Anrede 1, Zeilenumbruch, Anrede 2, Zeilenumbruch, Zeilenumbruch, Zeilenumbruch, usw. schreibt und dann erst irgendwo ganz unter der eigentliche Text zu lesen ist. Nach der letzten Anrede würde mir aber schon ein Zeilenumbruch reichen. Ich habe jetzt ein bisschen rumprobiert, aber komme nicht weiter.

Kann mir irgendjemand helfen?

Das ist das, was ich bisher gemacht habe:

Dim OutApp As Object
Dim OutMail As Object
Dim i As Long
Dim MailVerteiler As String
Dim MailAnrede As String

MailVerteiler = " "
MailAnrede = ""

With Sheets("Deckblatt")
For i = 19 To .UsedRange.Rows.Count + .UsedRange.Row - 1
If .Cells(i, 2).Value <> " " Then
MailVerteiler = MailVerteiler & .Cells(i, 4).Value & ";"
End If
Next i

If Trim(MailVerteiler) <> " " Then
MailVerteiler = Left(MailVerteiler, Len(MailVerteiler) - 1)
End If

For i = 19 To .UsedRange.Rows.Count + .UsedRange.Row - 1
If .Cells(i, 2).Value <> " " And .Cells(i + 1, 2).Value <> " " Then
MailAnrede = MailAnrede & .Cells(i, 7).Value & vbCrLf
Else
Exit For
End If
Next i

If Trim(MailAnrede) <> " " Then
MailAnrede = Left(MailAnrede, Len(MailAnrede) - 1)
End If

End With

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

On Error Resume Next
With OutMail
.To = MailVerteiler
.Subject = "Test"
.Body = MailAnrede & _
"Test Test Test"
.Send
End With
On Error GoTo 0

Set OutMail = Nothing
Set OutApp = Nothing

  

Betrifft: Schau Dir mal die... von: Case
Geschrieben am: 28.11.2017 13:56:13

Hallo Anna, :-)

... "If-Prüfungen" an allen Stellen in deinem Code an: ;-)

If .Cells(i, 2).Value <> " " Then
Du prüfst, ob die Zelle ein Leerzeichen enthält, willst aber wahrscheinlich auf leere Zelle prüfen: ;-)
If .Cells(i, 2).Value <> "" Then
Ändere das mal an ALLEN Stellen.

Servus
Case



  

Betrifft: AW: Schau Dir mal die... von: Anna
Geschrieben am: 28.11.2017 14:19:58

Hallo Case,

vielen Dank für den Hinweis. Habe es geändert und es funktioniert genau so, wie ich es mir vorgestellt habe. Vielen Dank! :)

Liebe Grüße

Anna


Beiträge aus den Excel-Beispielen zum Thema "Zeilenumbruch im String"