Microsoft Excel

Herbers Excel/VBA-Archiv

VBA Variable wird überschrieben

Betrifft: VBA Variable wird überschrieben von: LaFu LaFu
Geschrieben am: 03.09.2020 20:52:36

Guten Abend zusammen,


ich möchte gern eine Email (Outlook) aus meinem Workbook mit verschiedenen Fragen aus einem Fragenkatalog, welche ich vorher mittels "x" als relevant markiert habe, erstellen.


Meine For...Next Formel überschreibt mir jedoch in meiner erstellten Email immer meine Variable strText, sodass jeweils nur die letzte Frage aus meinem Fragenkatalog mit in meine Email übernommen wird:

Sub Feedback() 'Email an Mandant senden --> Offen

Dim objOutlook As Object
Dim objMail As Object
Dim strHallo As String
Dim strText As String
Dim intRow As Integer

Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)

strHallo = "Sehr geehrte" & IIf(Inhalt.Range("D4") = "Frau", " ", "r ") & Inhalt.Range("D4") & " _
 _
 " & Inhalt.Range("E4") & "," & vbCrLf & vbCrLf
    

For intRow = 8 To 100 'Fehler: Formel nimmt nur eine Markierte Zeile
    If Cells(intRow, 7) = "x" Then
    strText = Cells(intRow, 3) 'Formel überschreibt strText, sodass immer nur die letzte Cells   _
_
mit einem x aufgenommen wird
    End If
Next

With objMail
   .To = Inhalt.Range("C4")
   .Subject = "Rückfragen / Offene Themen Jahresabschluss " & Inhalt.Range("C3")
   .Body = strHallo & strText
   .Display
End With

Set objOutlook = Nothing
Set objMail = Nothing

End Sub
Besten Dank für Tipps, Ideen und Anregungen.
Grüße
LF

Betrifft: AW: VBA Variable wird überschrieben
von: ralf_b
Geschrieben am: 03.09.2020 21:12:03


strText = strText & Cells(intRow, 3)

Betrifft: AW: VBA Variable wird überschrieben
von: Schorsch
Geschrieben am: 04.09.2020 08:34:04

Danke Ralf.

Leider wird mir dadurch aber ganz nichts mehr angezeigt.

For intRow = 8 To 100 'Fehler: Formel nimmt nur eine Markierte Zeile
If Cells(intRow, 7) = "x" Then
strText = strText & Cells(intRow, 3)
End If
Next

Betrifft: AW: VBA Variable wird überschrieben
von: LaFu
Geschrieben am: 04.09.2020 09:36:44

strText = strText & vbNewLine & Cells(intRow, 3)

Das hat funktioniert.
Danke

Betrifft: AW: VBA Variable wird überschrieben
von: Werner
Geschrieben am: 04.09.2020 09:44:49

Hallo,

dann aber nicht mehr offen.

Zudem würde ich das so machen:
If strText = vbnullstring Then
     strText = Cells(intRow, 3)
Else
     strText = strText & vbNewLine & Cells(intRow, 3)
End If
Sonst hast du bei nur einem Treffer trotzdem einen Zeilenumbruch.

Gruß Werner

Betrifft: AW: VBA Variable wird überschrieben
von: LaFu
Geschrieben am: 04.09.2020 09:57:37

Danke (korrekt, Haken ausversehen gesetzt)

Betrifft: AW: VBA Variable wird überschrieben
von: Werner
Geschrieben am: 03.09.2020 21:16:25

Hallo,

na ist ja klar, bei jedem Schleifendurchlauf wir der neue Wert in die Variable geschrieben und damit ist der alte Wert weg.

Wie sollen denn die verschiedenen Werte in die Variable? Getrennt mit Komma, Semikolon, Leerzeichen? Oder nach jedem Eintrag ein Zeilenumbruch?

Gruß Werner

Betrifft: AW: VBA Variable wird überschrieben
von: LaFu LaFu
Geschrieben am: 04.09.2020 07:01:41

Moin Werner,

genau so hab ich das auch verstanden, nur nicht wie ich es beheben kann.

Am liebsten jeder Wert in eine Neue Zeile (Zeilenumbruch) mit Bullet-Point.

LG
LF

Beiträge aus dem Excel-Forum zum Thema "VBA Variable wird überschrieben"