Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1896to1900
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

VBA Code für jede Zeile

VBA Code für jede Zeile
30.08.2022 17:23:32
Tom
Hallo Forum,
ich bin absoluter VBA Laie und suche mir alles mühsam zusammen.
Nachfolgendes Script habe ich gefunden und für meinen Zwecke teileweise umbauen können, so das es läuft.
Es läuft aber nur für 1 Zelle.
Ich mochte gerne automatisiert Termine im Kalender speichern und gleichzeitig als Bestätigung dem Kunden schicken.
Derzeit über 1 Button für 1 Zelle.....
Mein Wunsch wäre, das Script am Ende der Tabelle so einzufügen, dass ich auf einen Link klicke und die Terminvorschau öffnet sich.
Ich weiß, dass es mit =Hyperlink() geht, tu mich aber auch schwer mit der Programmierung.
Hier das Script:

Sub Termine2023()
Dim OL As Outlook.Application, Appoint As Outlook.AppointmentItem, ES As Worksheet, WB As Workbook
Set WB = ThisWorkbook
Set TP = WB.Sheets("Termine2023")
Set OL = New Outlook.Application
'Load Variables
Recipient = TP.Cells(3, 14).Value
DayMeeting = TP.Cells(3, 15).Value
StartTime = TP.Cells(3, 16).Value
EndTime = TP.Cells(3, 17).Value
Location = TP.Cells(3, 5).Value
Project = TP.Cells(3, 19).Value
Subject = TP.Cells(110, 2).Value
Greeting = TP.Cells(112, 2).Value
BodyA = TP.Cells(114, 2).Value
BodyB = TP.Cells(116, 2).Value
BodyC = TP.Cells(118, 2).Value
FinishA = TP.Cells(120, 2).Value
FinishB = TP.Cells(121, 2).Value
Set Appoint = OL.CreateItem(olAppointmentItem)
With Appoint
.Subject = Subject
.Start = StartTime
.End = EndTime
.Location = Location
.AllDayEvent = False
.Body = Greeting & Chr(10) & Chr(10) & BodyA & Chr(10) & Chr(10) & BodyB & Chr(10) & Chr(10) & BodyC & Chr(10) & Chr(10) & FinishA & Chr(10) & FinishB
.MeetingStatus = olMeeting
.Recipients.Add (Recipient)
.SendUsingAccount = .Session.Accounts.Item("DJ Tom Stroh")
.Display
End With
Set OL = Nothing
End Sub
Hier mein Hyperlink, der aber nur rudimentär ist:
=HYPERLINK("mailto:" & N2 & "?Subject=" &$B$110 & "&body=" &$B$114;"Send Mail")
Als Ausgabe sollte das dabei im Terminfenster im Outlook rauskommen:
Gerne bestätige ich Ihnen den Termin am 12. April 2023 um 13:45.
Ich freue mich Sie zum Vorgespräch in …. zu treffen.
Schön Sie kennenzulernen.
MfG
Tom
Ich würde gerne Bilder der Terminansicht und der Tabelle einstellen, weiß leider nicht wie es funktionier.
Danke für die Hilfe, Tom

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Code für jede Zeile
31.08.2022 09:33:09
Yal
Hallo Tom,
mit der Hyperlink-Formel kannst Du nur Mail erzeugen, aber keinen Termin.
Was Du brauchst, ist eine sogenannte User Defined Function: ein VBA-Code, das durch eine Formel im Excel-Blatt augerufen wird. Ein solche UDF ist ein Public Function, das in einem Modul (nicht in Tabelle- oder Mappe-Codepane) abgelegt wird.
Probiere:

Public Function MeinTest(ByVal Target As Range)
MeinTest = "In Zelle " & Target.Address & " ist " & Target.Text & " eingetragen."
End Function
Füge irgendwas in A1 und schreibe in B1 =MeinTest(A1)
VG
Yal
Anzeige
AW: VBA Code für jede Zeile
31.08.2022 21:40:23
Tom
Hallo Yal,
danke für Deine Mühe und Deine Zeit.
Screenshot meiner Tabelle hier:
Userbild
Der Button "Termine 2023" erzeugt die Terminausgabe nach obigem Code so hier:
Userbild
ALso, Deinen Code habe ich probiert, funktioniert, geändert, so dass nur das, was in der Zelle steht angezeigt wird... try and error - works
Danke für den Hinweis mit dem HYPERLINK, ich weiß, das ich damit eine Mail erzeuge und versenden kann.
Ich habe auch einen erstellt, welcher mir eine Mail, einen Betreff und 1 Zeile im Body ausgibt. Wie ich mehrere Zeilen im Body ausgebe, versuche ich gerade, denke was mit 0A gelesen zu haben für eine neue Zeilen...
Eigentlich finde ich den von mir geposteten Code schon Charmant, da er einen Termin erzeugt, zwar noch nicht im richtigen Kalender (iCloud), aber es funktioniert.
Wie gesagt nicht von mir, aber aus dem Netz und frei verwendbar.
Jetzt möchte ich eigentlich, das dieser Code irgendwie als Link (wie der Hyperlink) für die Zellen am Tabellenende beim klicken zum Termin führt.
In meiner Tabelle ist Zelle AA2 die ausführende Zelle zur Zelle B2, in der das Datum 30.12.2022 steht.
Das Ende der Tabelle ist Zelle B107 mit Datum 30.12.2023
Mit dem obigen Code (Button) erzeuge ich aber NUR EINEN Termin. Ich würde aber für jede Zelle (Datum) einen Termin erzeugen können.
Sprich, ein Kunde hat eine Hochzeit am 30.12.2022 gebucht, klicke ich auf die Zelle, das Terminfenster von Outlook geht auf, Datum, Beginn und ende Vorgespräch steht darin, Betreff etc. pp.
...eben so wie in obigem Code...
ich hoffe ich habe mich verständlich ausgedrückt.
Otherwise, ich erstelle einen Hyperlink und ziehe den von Ende des Jahres bis Ende nächsten Jahres, dann kann ich meine Bestätigung nur per Mail schicken und muss den Termin im 2. Schritt manuell eintragen, was nicht so komfortabel wäre.
Lieben Dank für Deine Hilfe,
Tom
Anzeige
AW: VBA Code für jede Zeile
01.09.2022 10:19:20
Yal
Hallo Tom,
tl;dr.
Ist es eine Frage? Wenn ja welche?
VG
Yal
AW: VBA Code für jede Zeile
02.09.2022 16:15:49
Tom
Hallo Yal,
ich musste erst einmal suchen was du mir sagen wolltest...
Sorry, das der Post so lang war, ich wollte unnötige Nachfragen vermeiden und ausführlich erklären um was es mir geht.
Frage 1: geht der von mir gepostete Code so umzustellen, dass ich ihn am Ende jeder Zeile meiner Tabelle als eine Art link einbinden kann, für jedes Datum?
geht das nicht:
Frage 2: wie bekomme ich mit der HYPERLINK Funktion einen Text so hinterlegt, wie in dem Terminfester, aber eben als Mail (Freizeichen, Formatierung etc.).
Danke für Deine Antwort.
Tom
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige