511 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo zusammen,

über VBA soll eine Mail verfasst werden - das kriege ich noch hin.

Allerdings sollen dabei dann aus der zugehörigen Tabelle alle Datenzeilen mit aufgenommen werden, die in einer zweiten Spalte eine Zahl größer Null aufweisen.

Heißt: wenn in der zweiten Spalte bei einer Datenzeile eine Null steht, wird diese übersprungen und die nächste Zeile wird aufgeführt, sofern diese keine Null aufweist usw.

Ich würde es zwar schaffen, das in die Mail zu laden, hätte aber dann Lücken, wenn z.B. mehrere Zeilen eine Null aufweisen und somit nicht in die Mail sollten.

(Wie) Kann ich das mit einer If-Funktion lösen?

Oder gibt es da eine andere Möglichkeit?

Vielen Dank vorab.

3 Antworten

0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)
Hi,

wie sieht denn dein bisheriger Code aus?

Bis später, Karin
0 Punkte
Beantwortet von
Hallo Karin,

ist aber unvollständig:

Private Sub cmd_Mail_Click()

Dim objOutlook As Object
Dim objMail As Object

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

With objMail
   'Empfänger
    .To = "MAILADRESSE KOMMT NOCH"
   .Subject = ThisWorkbook.Worksheets("C09-Tool-Tab.").Range("B57") + " " + ThisWorkbook.Worksheets("C09-Tool-Tab.").Range("B3")
   .Body = "Sehr geehrter Herr Mustermann," & _
   vbCrLf + vbCrLf + "Folgende Mängel wurden festgestellt" + vbCrLf + vbCrLf + If ThisWorkbook.Worksheets("C09-Tool-Tab.").Range("C8") > "0" then ThisWorkbook.Worksheets("C09-Tool-Tab.").Range("B8") else ThisWorkbook.Worksheets("C09-Tool-Tab.").Range("B9") end if
   .Display        'Erstellt die Email und öffnet diese. Der Versand erfolgt anschließend manuell vom User!
End With

End Sub
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo,

ich würde die Zellen durchlaufen und die einzelnen Mängel nach der Prüfung in eine Variable schreiben, die du in deine Mail einfügen kannst.

Wenn ich dich richtig verstanden habe, dann stehen in Spalte C ab Zeile 8 die Nummern und in Spalte B die Mängel.

Hier mal ein Beispiel, wie das aussehen könnte:

Private Sub cmd_Mail_Click()

Dim objOutlook As Object
Dim objMail As Object
Dim strInhalt As String
Dim lngZeile As Long

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

With ThisWorkbook.Worksheets("C09-Tool-Tab.")
   'Spalte C durchlaufen
   For lngZeile = 8 To .Cells(Rows.Count, 3).End(xlUp).Row
      'falls Zahl in Spalte C größer Null, dann Mängel aus Spalte B in Variable schreiben inkl. eines Zeilenumbruchs
      If .Cells(lngZeile, 3) > 0 Then strInhalt = strInhalt & .Cells(lngZeile, 2) & vbCrLf
   Next lngZeile
End With

With objMail
   'Empfänger
    .To = "MAILADRESSE KOMMT NOCH"
   .Subject = ThisWorkbook.Worksheets("C09-Tool-Tab.").Range("B57") & " " & ThisWorkbook.Worksheets("C09-Tool-Tab.").Range("B3")
   .Body = "Sehr geehrter Herr Mustermann," & _
   vbCrLf & vbCrLf & "Folgende Mängel wurden festgestellt" & vbCrLf & vbCrLf & strInhalt
   .Display        'Erstellt die Email und öffnet diese. Der Versand erfolgt anschließend manuell vom User!
End With

End Sub

Gruß

M.O.

...