Ich hätte da für die Experten hier mal wieder eine kleine Aufgabe.
Als erstes mal mein "Problem-Makro":
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Range("J37:S38")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
Call Send_Notice
End If
End Sub
Private Sub Send_Notice()
Dim objOutlook As Object
Dim objMail As Object
Dim RngBereich As Range
Set RngBereich = Range("J37:J38")
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
With objMail
.to = "xxx@xxx-xxx.de"
.Subject = "Mehrarbeit Jahresschichtplan Logistik 2018"
.Body = Cells(37, 3) & " arbeitet am " & Cells(37, 6) & " länger, weil " & Cells(37, 10) _
& vbLf & _
Cells(38, 3) & " arbeitet am " & Cells(38, 6) & " länger, weil " & Cells(38, 10)
.Send
End With
End Sub
(Ja, ich weiß, dass der Code sicherlich optisch verbessert werden könnte und bestimmt auch Teile enthält, die unwichtig sind. Aber ich bin noch ein Anfänger ;-))
So. Das Makro tut, was es soll. Es schickt mir eine Email, wenn ein User eine bestimmte Zeile ausfüllt und in der letzten Zelle (J:37 bzw. J:38) Enter drückt.
Als Problem sehe ich, dass:
1. auch wenn nur in der 1. Zeile Inhalt steht in der Email die 2. Zeile geschrieben wird.
Mailinhalt:
XXXXX arbeitet am 05.03.2018 länger, weil XXXX länger gemacht (Arbeits-) Zeit5.48-16.00 arbeitet am länger, weil (Arbeits-) Zeit Wie muss ich also den Code anpassen, dass er mir nur die Zeilen in der Mail anzeigt, die gefüllt sind?
2. Nachdem die Mail versendet wurde, was ja im Hintergrund passiert und für den User nicht sichtbar ist, soll der Inhalt der beschriebene Zeile gelöscht werden. Super wäre auch noch eine Msg-Box mit der Bestätigung, dass die Email versandt wurde. (Vlt. funktioniert das ja auch in Kombination? Msg-Box mit Bestätigung, Button mit OK, Zellen-/Zeileninhalt löschen?)
Es soll aber wie gesagt nur dewr Inhalt, nicht die Formatierung, Rahmen, etc. entfernt werden.
Vielen Dank schonmal für eure Hilfe :)