die passende Zelle zu finden und etwas ins Kommentarfeld zu schreiben ist eigentlich simpel. Was die Sache umständlich macht ist, dass du in den Zellen kein Datum drinstehen hast. Man kriegt auch so was hin, wenn man jeden Monat einen Range zuweist. Das ist eigentlich nur noch Fleißarbeit und umständliches Codeschreiben.
Baue die Formeln so um, dass ein echtes Datum in der Zelle steht. Die Zelle formatierst du auf einstellige Tageszahl: "T". Dann kann man den Range entweder mit .Find und wichtig Dateserial die zutreffende Zelle finden.
23.12.2023, 14:39 (Dieser Beitrag wurde zuletzt bearbeitet: 23.12.2023, 14:39 von Ralf A.)
...letztendlich könnte man für einen Kalender, ganz ohne VBA und Excel bemühen zu müssen, den in Outlook integrierten Kalender nutzen. Aber ja, ich weiß Excel kann auch Bildbearbeitung und Musik und.... es ist vollkommen unerklärlich, weshalb die anderen Programme notwendig sind....
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben. Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
23.12.2023, 16:13 (Dieser Beitrag wurde zuletzt bearbeitet: 23.12.2023, 16:50 von Ralf A.)
...echt jetzt? Du definierst einen Bereich, benutzt eine Schleife und darin klapperst Du knapp 1000 Bedingungen einzeln ab?
Code:
Set Bereich = Tabelle1.Range("AJ9:AW1000")
For Each Zelle In Bereich
'Termin 1 If Zelle.Value = Range("AF9") And Range("AF9") <> "" Then skommentar1 = "Was:" & vbLf & Range("AH9") & vbLf & vbLf & "Wann:" & vbLf & Format(Range("AG9"), "hh:mm") & " Uhr" Range(Zelle.Offset(0, 1)).AddComment.Text skommentar1 End If
'Termin 2 If Zelle.Value = Range("AF10") And Range("AF10") <> "" Then skommentar2 = "Was:" & vbLf & Range("AH10") & vbLf & vbLf & "Wann:" & vbLf & Format(Range("AG10"), "hh:mm") & " Uhr" Range(Zelle.Offset(0, 1)).AddComment.Text skommentar2 End If
'usw.
Da solltest Du wirklich besser auf Outlook zurückgreifen. Oder noch besser einen Taschenkalender benutzen.
Die Schleife ließe sich wesentlich verkürzen:
Code:
For Each Zelle In Bereich
'Alle Termine If Zelle.Value = Range("AF" & zelle.row) And Range("AF" & zelle.row) <> "" Then skommentar1 = "Was:" & vbLf & Range("AH " & zelle.row ) & vbLf & vbLf & "Wann:" & vbLf & Format(Range("AG " & zelle.row ), "hh:mm") & " Uhr" Range(Zelle.Offset(0, 1)).AddComment.Text skommentar1 End If next
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben. Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
unabhängig von deinem bisherigen Stand, habe ich in deiner hochgeladenen Datei mal eine Prozedur basierend auf Ranges per Monat eingebaut. Ansonsten gilt natürlich wie ich bereits weiter oben geschrieben hatte: Arbeite mit echtem Datum und Zelle(n) entsprechend formatiert.
23.12.2023, 19:11 (Dieser Beitrag wurde zuletzt bearbeitet: 23.12.2023, 19:13 von Andyle.)
Genial!
Hab es noch etwas umgebaut.
Allerdings ist mir aufgefallen, wenn man zB. das Jahr 2023 einstellt und den 29.2.23 den es ja nicht gibt als Termin einträgt. dann markiert er den 23.2.23