Mehrere Zellen nach Kriterium in E-Mail kopieren und verschicken
#1
Hallo,
nun habe ich nach der tollen Hilfe heute von einem User noch ein Problem.
Ich möchte gerne nach einem Kriterium mehrere Zellen in eine E-Mail kopieren. Mein Kriterium befindet sich in einer Combobox.
Bis jetzt bekomme ich es nur hin, dass die 3 Zelle einer Zeile in die E-Mail kopiert wird, wenn mein Kriterium erfüllt ist.
Ich brauche aber Zelle 3,4 und 5 nebeneinander, was ungefähr so aussehen soll: Artikelnummer, Artikelbezeichnung und die Menge der fehlenden Ware.
Es müssen aber auch alle Zeilen, indem das Kriterium vorkommt in die E-Mail kopiert werden.


Code:
Dim lngRow, lngCol As Long
Dim Outlook As Object
Dim OutlookMailItem As Object
Dim myAttachments As Object
Dim Auswahl As String, Zeile As Integer
Dim rng As Range

zmax = ActiveSheet.UsedRange.Rows.Count
Auswahl = ComboBox1.Value



Set OutlookApp = CreateObject("outlook.application")
Set OutlookMailItem = OutlookApp.CreateItem(0)
Set myAttachments = OutlookMailItem.Attachments


With OutlookMailItem
.To = TextBox1.Value
.CC = TextBox2.Value
.Subject = ("Fehlmengen der nächsten Lieferung")
For lngRow = 6 To 800
If Cells(lngRow, 2).Value = ComboBox1.Value Then
.Body = Cells(lngRow, 3)
   End If
Exit For
Next lngRow
'.send
.Display

End With

Set OutlookApp = Nothing
Set OutlookMailItem = Nothing

End Sub
Es wäre sehr toll, wenn mir jemand dabei eine Hilfestellung geben könnte, damit ich es verstehe.
Anbei meine Datei.
Gruß
Daniel


Angehängte Dateien
.xlsm   Fehlmengen Vollgut_Neu - Kopie.xlsm (Größe: 834 KB / Downloads: 1)
Top
#2
Hallo

im Prinzip sieht die einfachste Lösung so aus:
.Body = Cells(lngRow, 3) & ", " & Cells(lngRow, 4) & ", " & Cells(lngRow, 5)

Was für Trennzeıchen du einfügst "," oder ";" und wieviele Leerzeichen, 1,2 oder 3 musst du entscheiden!

mfg  Gast 123
Top
#3
Moin,
Danke.
Sobald ich jetzt aber Musterkunde 2 in der ComboBox1 wähle, bleibt die Mail im Body leer.
Wähle ich Musterkunde 1, habe ich nur den ersten Artikel nach meinem Wunsch im Body der Mail, der Rest fehlt aber.
Code:
'** Fehlmengen mit Outlook versenden
Dim lngRow, lngCol As Long
Dim Outlook As Object
Dim OutlookMailItem As Object
Dim myAttachments As Object


Set OutlookApp = CreateObject("outlook.application")
Set OutlookMailItem = OutlookApp.CreateItem(0)
Set myAttachments = OutlookMailItem.Attachments


With OutlookMailItem
.To = TextBox1.Value
.CC = TextBox2.Value
.Subject = ("Fehlmengen der nächsten Lieferung")
For lngRow = 6 To 800
If Cells(lngRow, 2) = ComboBox1.Value Then
.Body = Cells(lngRow, 3) & "  " & Cells(lngRow, 4) & "  " & Cells(lngRow, 5) & " Stk."
   End If
Exit For
Next lngRow
'.send
.Display

End With

Set OutlookApp = Nothing
Set OutlookMailItem = Nothing

End Sub

Leider bin ich blutiger Anfänger und übersehe die leichtesten Lösungen.

Gruß
Daniel
Top
#4
Bin jetzt ein Stück weiter, indem ich jetzt bei allen Musterkunden einen Artikel nach meiner Vorgabe in den Body meiner E-Mail geschrieben bekomme.
Ich bekomme halt die Schleife nicht hin, damit die anderen Artikel vom Kunden auch in die Mail geschrieben werden.

Code:
Private Sub CommandButton2_Click()

'** Fehlmengen mit Outlook versenden
Dim lngRow, lngCol As Long
Dim Outlook As Object
Dim OutlookMailItem As Object
Dim myAttachments As Object


Set OutlookApp = CreateObject("outlook.application")
Set OutlookMailItem = OutlookApp.CreateItem(0)
Set myAttachments = OutlookMailItem.Attachments


With OutlookMailItem
.To = TextBox1.Value
.CC = TextBox2.Value
.Subject = ("Fehlmengen der nächsten Lieferung")
For lngRow = 6 To 800
If Cells(lngRow, 2) = ComboBox1.Value Then
.Body = Cells(lngRow, 3).Value & "  " & Cells(lngRow, 4).Value & "  " & Cells(lngRow, 5).Value & " Stk." & vbNewLine
End If
Next lngRow
'.send
.Display

End With

Set OutlookApp = Nothing
Set OutlookMailItem = Nothing

End Sub
Top
#5
Keiner eine Idee?
Top
#6
Hallöchen,

so wie Du programmiert hast dürfte im Body nur der letzte Artikel stehen.
Im Prinzip ist das wie wenn Du schrittwese Dein Ergebnis änderst:

Ergebnis = A & B
Ergebnis = C & D
Ergebnis = E & F

Am Ende steht als Ergebnis EF.

Wenn Du den vorherigen Inhalt willst müsstest Du

Ergebnis = Ergebnis & A & B

schreiben usw. Da Ergebnis am Anfang leer ist passt das hier Smile und vor AB steht dann auch nix.

Du müsstest nur schauen ob da .Body = .Body & … funktioniert oder Du eine Variable füllen musst, z.B. strBody = strBody & ..., und nach der Schleife .Body = strBody programmierst.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#7
Moin,

.Body = .Body & … geht.
Super Idee! Danke für die Hilfe und ein schönes Wochenende!


Gruß
Daniel
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste