Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1772to1776
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Relativer Zellenbezug von aktiver Zelle

Relativer Zellenbezug von aktiver Zelle
16.07.2020 15:09:31
aktiver
Hallo zusammen,
bin auf dieses tolle Forum gestoßen. Eins vorweg ich hatte bis heute morgen absolut nichts mit Makros, VBA oder vergleichbarem zu tun, habe mich mich bisher an die einfachen Excel-Formeln gehalten. Man verzeihe mir also umständliche programmierung :P. Nun habe ich mich an meinem ersten Makro versucht. Ziel soll es sein aus meiner Excel Liste heraus eine Email zu generieren, die an das Zurücksenden von Schulungsunterlagen erinnern soll. Ich habe in meiner Liste Daten wie "Schulungsbezeichnung", "Name Teilnehmer"; "SchulungsID", "Schulungsdatum". Ich habe das Makro als Test auf die erste Zeile mit meinem Namen definiert. Dabei habe ich die Angaben, die in der Mail enthalten sein sollen (Q2 - Emailadresse; F2- Name (in dem Fall meiner) und die weiteren Angaben die der Empfänger benötigt in den Body geschrieben.
Ausgelöst wird das Makro durch Ändern eines Wertes einer beliebigen Zelle der Spalte A (da steht dann Mahnungsnummer), sprich trage ich 1 ein, zündet das Makro ich kann die Mail sofort versenden und ich weiß das war die erste Erinnerung. Dafür habe ich einen Code im Tabellenblatt (siehe unten).
Das funktioniert super, bis auf die Tatsache, dass ich das auf die erste Zeile (Meine Werte Q2, B2; D2) definiert habe. Ich hätte das gerne so gelöst dass, wenn ich den Wert in Zelle A8 ändere, in der Mail die Werte der Zellen Q8, B8, D8 ausgegeben werden. Also immer die Werte von der Zeile in der ich die Änderung vornehme. Ich hoffe sehr, dass mir hier erneut weitergeholfen werden kann.
Hier das Makro:
Sub Mahnen_richtiges_Format()
Range("Q2") = Now
Dim objOutlook As Object
Dim objMail As Object
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
With objMail
.To = Range("O2")
.Subject = "Erinnerung einer fehlenden Unterlagen"
.htmlBody = "Sehr geehrte(r) Herr / Frau " & Range("F2") & ",
" _
& "leider konnten wir noch keinen Eingang, über eine Ihrer persönlichen Schulungsunterlagen feststellen. Dies betrifft die Wirksamkeitsanalyse mit folgenden Eckdaten:
" _
& "Schulungstyp: " & Range("B2") & "
" & "Schulungs-ID: " & Range("M2") & "
" & "Schulungsdatum: " & Range("D2") & "
" _
& "
" & "
Dies ist die " _
& Range("A2") & ". Mahnung, bitte senden Sie das vollständig ausgefüllte Dokument bis zum " & Range("N2") & " an den Veranstalter(beispiel@beispiel.com)
" _
& "Sollten Sie das Dokument nicht auffinden können, wenden Sie sich bitte ebenfalls an angebebene E-Mailadresse.
" _
& "Ihr Veranstalter." _
& "
Tel.: 0123
Email: beispiel@beispiel.com"
.Display
End With
Set objMail = Nothing
Set objOutlook = Nothing
End Sub
Hier der Tabellencode:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub
Call Mahnen_richtiges_Format
End Sub

Besten Dank euch im Voraus!
Gruß Domi

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Relativer Zellenbezug von aktiver Zelle
16.07.2020 15:19:04
aktiver
Hallo
Du übergibst Deiner Procedur die Zeile
Z.B Call Mahnen_richtiges_Format(Target.row)
Dein Prozedur Kopf:
Sub Mahnen_richtiges_Format(mZ as long)
Und bei jedem Range ersetzt Du die 2
Statt Range("B2") schreibst Du Range("B" & mZ)
Eine andere Möglichkeit wäre: Du übergibst den Range und arbeitest dann mit Offset.
AW: Relativer Zellenbezug von aktiver Zelle
16.07.2020 15:35:19
aktiver
Hallo Peter,
das funktioniert genau, wie ich es mir erhofft habe.
Besten Dank für die schnelle Antwort :)
Gruß
Domi
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige