Zellenbezug zur Schaltfläche
02.02.2023 11:08:21
Ben
Hi und Hallo zusammen,
bisher bin ich nur stiller "Mitleser" gewesen um mir bei den ein oder anderen Excellisten oder Makros etwas abzuschauenn und zu lernen.
Da ich noch recht unerfahren in VBA bin, komme ich tatsächlich mit meinem Problem alleine nicht mehr weiter und hoffe durch euch weiterzukommen.
Folgendes habe ich vor:
Da ich seit neustem die Kaffeekasse bei uns im Betrieb übernommen habe, möchte ich eine realtiv einfache und halbautomatisierte Excel Liste führen.
Hierzu möchte ich nun in der Spalte "P13" - "P32" eine Schaltfläche generieren die für den jeweiligen Mitarbeiter eine autmatiseirte Email mit den Bezügen aus den jeweiligen Zellen des Mitarbeiters verschickt.(siehe Bild)
Durch die Suchfunktion hier im Forum habe ich auch einen entsprechenden Code dafür gefunden und für meine Zwecke angepasst. (siehe Makro)
Ich hoffe ich konnte es bis hierhin gut erklären ;-)
Wenn ich die Schaltfläche nutze (habe ein Formularsteuerelemt benutzt) öffnet er auch auch Outlook und fragt ob er Zugriff bekommt oder ob ich es verweigern möchte.(siehe Bild)
Nach Erteilung erhalte ich auch tatsächlich eine Email mit allen Infos wie ich es mir vorgestellt habe.
Ich habe in der Spalte "Q" die E-Mail-Adressen der jeweiligen Kollegen hinterlegt, woher der "Empfänger" entnommen wird.
Jetzt zum eigentlichen Problem:
Ich habe im Code alle Info Bezüge händisch eingetragen, wie zum Beispiel an wenn die Email gehen soll ".to = Sheets("Kassenbuch").Range("Q16").Value, ,
oder aus welchen Zellen er welchen Wert nehmen soll.
Ich möchte jetzt nicht für jeden Button der für den Mitarbeiter steht, den Code manuell anpassen. (sonst könnte ich die Email gleich händisch erstellen)
Gibt es die Möglichkeit diese Schaltfläche zu duplizieren und diese im VBA die Bezüge auotmatisch für die jeweilige "Reihe" übernommen werden?
Wie zum Beispiel wenn ich eine Formel für eine Zelle erstelle, kann ich diese ja auch herunterziehen und wird automatisch an die nächste "Reihe" übernommen.
Da ich den Kalender für die nächsten Monate erstellt habe, wäre eine händische Programmierung sehr sehr aufwändig.
Ich hoffe ich konnte alles gut erklären und bitte habt Nachsicht, wenn ich noch nicht jede Bezeichnung richtig weiß.
Wäre spitze wenn mir jemand Auskunft gibt, oder mich mit dem Code unterstützt.
Vielen lieben Dank im Voraus und Grüße Ben
Hier noch der bisherige Code( hoffe ich füge es richtig ein)
Sub Engert_Klicken()
On Error GoTo ErrHandler
' SET Outlook APPLICATION OBJECT.
Dim objOutlook As Object
Set objOutlook = CreateObject("Outlook.Application")
' CREATE EMAIL OBJECT.
Dim objEmail As Object
Set objEmail = objOutlook.CreateItem(olMailItem)
With objEmail
.to = Sheets("Kassenbuch").Range("Q16").Value
.Subject = "Abrechnung Kaffeeliste " & Date & " "
' Text
.Body = "Hallo," & vbCrLf & vbCrLf & _
"ich bitte Dich den Betrag für den letzten Monat von " & Range("N16").Text & " bei mir im Büro zu bezahlen. " & vbCrLf & _
"Der Betrag setzte sich wie folgt zusammen: " & vbCrLf & _
"Anzahl Kaffee: " & Range("B16").Text & vbCrLf & _
"Anzahl Tee: " & Range("D16").Text & vbCrLf & _
"Anzahl Softdrinks: " & Range("H16").Text & vbCrLf & _
"Betrag offen aus Dezember 12/22: " & Range("L16").Text & vbCrLf & _
"Guthaben Dezember 12/22: " & Range("M16").Text & vbCrLf & vbCrLf & _
"Vielen Dank "
' .Attachments.Add ("W:\TP\12 TPM\Übergeordnetes\Übergeordnetes\Küche TPM\2023_Kaffeekasse")
.Send
End With
' CLEAR.
Set objEmail = Nothing: Set objOutlook = Nothing
ErrHandler:
End Sub