Registriert seit: 18.03.2020
Version(en): 2010
Hallo zusammen,
Ich habe in meiner Excel Liste Zellen, in welcher ich manuell Einträge hinterlege. Immer das aktuelle Datum vorangestellt.
Der Eintrag in einer einzelnen Zelle könnte also wie nachfolgend aussehen: 24.12.2021: Es ist Weihnachten 31.12.2021: Heute ist Silvester 15.02.2022: Morgen habe ich Urlaub
Bisher habe ich den letzten (aktuellsten) Eintrag immer händisch markiert und bunt eingefärbt, damit er sich klar abhebt. Die Frage ist nun, ob dies auch mit einem Makro möglich ist? Also finde das letzte/höchste Datum in der Zelle (hier 15.02.2022) und färbe mir beginnend von diesem bis zum Ende des Eintrags die Schrift in einer beliebigen Farbe (hier grün), den vorangehenden Eintrag färbe wieder schwarz ein.
Kann man das mit VBA realisieren?
Ich wäre für einen Denkanstoß sehr dankbar.
Viele Grüße Sebbo
Registriert seit: 14.02.2022
Version(en): XL
15.02.2022, 19:09
(Dieser Beitrag wurde zuletzt bearbeitet: 15.02.2022, 19:10 von Kronos.)
Hallo Sebbo,
das kann man sicher mit VBA realisieren. Du musst in einer Spalte mit den Datumsangaben das aktuelle Datum (oder das letzte) finden, dann die Schriftfarbe dieser Zeile auf "grün" (oder welche Farbe auch immer) umstellen und die Schriftfarbe der Zeile darüber auf "Standard".
Wo genau hast Du ein Problem? Oder erwartest Du vollständigen Code, der das ohne Kenntnis Deiner Tabellenstruktur erledigt?
K.
Registriert seit: 18.03.2020
Version(en): 2010
Nein, ich erwarte nicht, dass mir jemand den kompletten Code hier präsentiert und ich ihn nur noch Copy/Paste in mein Excel Sheet kopiere ;)
Du hast mich aber glaube ich falsch verstanden. Das bzw. die Datums stehen nicht einzeln in separaten Zellen, sondern ich habe eine Zelle, in welcher mehrere Datums stehen können + zusätzlicher Text. Es scheitert aktuell daran, dass ich nicht weiß, wie ich explizit nach dem letzten/höchsten Datum in einer Zelle suche.
Viele Grüße Sebbo
Registriert seit: 14.02.2022
Version(en): XL
15.02.2022, 19:43
(Dieser Beitrag wurde zuletzt bearbeitet: 15.02.2022, 19:48 von Kronos.)
Hallo Sebbo, leider geht aus Deiner Antwort noch immer nicht hervor, wie Deine Tabellenstruktur aussieht. Zitat:24.12.2021: Es ist Weihnachten 31.12.2021: Heute ist Silvester 15.02.2022: Morgen habe ich Urlaub Steht das alles in einer Zelle, oder ist das über drei Zeilen verteilt, aber der Text jeder Zeile steht in einer Zelle. Es wäre hilfreich, wenn Du eine Beispieldatei hochlädst. Diese Datei kann auch gerne den Code enthalten, den Du bisher entwickelt hast. K. PS Sind die Zeilen immer sortiert, wie in Deinem Beispiel? So kannst Du doch immer die letzte Zeile nehmen und diese färben?
Registriert seit: 18.03.2020
Version(en): 2010
Es tut mir leid, ich dachte ich habe es in meinem letzten Post klar formuliert. In einer einzigen Zelle steht all das nachfolgende (mit Alt+Return untereinander angeordnet):
24.12.2021: Es ist Weihnachten 31.12.2021: Heute ist Silvester 15.02.2022: Morgen habe ich Urlaub
Ich habe also eine Zelle und in dieser einen Zelle steht (hier am Beispiel) 3x ein Datum und 3x ein Text.
Mein Problem ist wie gesagt, wie finde ich in dieser einen Zelle mit Text und Datum das größte Datum (hier 15.02.2022) um es dann entsprechend einfärben zu können. Es ist mir leider nicht möglich, Text und Datum in unterschiedlichen Zellen abzulegen.
Viele Grüße Sebbo
Registriert seit: 14.02.2022
Version(en): XL
15.02.2022, 22:09
(Dieser Beitrag wurde zuletzt bearbeitet: 15.02.2022, 22:09 von Kronos.)
Hallo Sebbo, da Du so gut wie nicht auf meine Fragen eingehst und auch keine Beispieldatei hochlädst, treffe ich Annahmen. Falls Sie nicht passen, bist Du sicher in der Lage, den Code entsprechend zu ändern. Ich nehme an, dass der Text immer in Zelle A1 steht, die Zeilenumbrüche mit vbLf eingefügt sind und die letzte Zeile in dem Text immer die Zeile mit dem letzten Datum ist. Dann färbt der folgende Code die letzte Zeile in der Zelle A1 grün. Zitat:Option Explicit
Sub formatCell()
Dim wks As Worksheet Set wks = ActiveSheet Dim rg As Range Set rg = wks.Cells(1, 1) Dim cellTxt As String cellTxt = rg.Value2 Dim lastLf As Long ' Startpostion der letzten Zeile lastLf = InStrRev(cellTxt, vbLf)
Dim lenFormat As Long ' Länge der letzten Zeile lenFormat = Len(cellTxt) - lastLf + 1 ' Zurücksetzen der Schriftfarbe für die ganze Zelle rg.Font.ColorIndex = xlAutomatic ' Letzte Zeile grün färben With rg.Characters(Start:=lastLf, Length:=lenFormat).Font .Color = 5287936 End With
End Sub Der Code ist getestet und funktioniert mit den von dir zur Verfügung gestellten Daten und auf den Annahmen, die ich wg. Deiner mangelnden Mitarbeit getroffen habe. K.
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
16.02.2022, 05:06
(Dieser Beitrag wurde zuletzt bearbeitet: 16.02.2022, 05:11 von RPP63.)
Moin! Ist zwar off topic, aber muss ich mal loswerden. Ich werde nie verstehen, warum man eine arme Zelle so vergewaltigen muss! Code: ?Format(Rows.CountLarge * Columns.CountLarge, "#,##0") 17.179.869.184
Heißt: Wandele Deine einzelne Zelle in folgendes um: | A | B | C | 1 | Zelle | Datum | Text | 2 | 1 | 24.12.2021 | Es ist Weihnachten | 3 | 1 | 31.12.2021 | Heute ist Silvester | 4 | 1 | 15.02.2022 | Morgen habe ich Urlaub |
Und schon ist die Auswertung ein Klacks! Und ja! Du wirst mir jetzt schreiben, dass Du folgendes erwähnt hast: Zitat:Es ist mir leider nicht möglich, Text und Datum in unterschiedlichen Zellen abzulegen. Verrätst Du auch warum? Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 18.03.2020
Version(en): 2010
18.02.2022, 00:05
(Dieser Beitrag wurde zuletzt bearbeitet: 18.02.2022, 00:12 von Sebbo.)
Hallo K.,
es tut mir leid, dass der Eindruck entstanden ist, ich würde auf deine Fragen nicht eingehen. Den Vorwurf der mangelnden Mitarbeit finde ich allerdings nicht zutreffend.
Eine Beispieldatei hoch zu laden hätte nicht viel gebracht, da ich auf der Suche nach einem Denkanstoß war/bin und alles was ich in die Beispieldatei gepackt hätte sich bereits in meinem ersten Post befand. Weiterhin habe ich zwei Mal geschrieben, dass ich das letzte/höchste Datum in einer Zelle finden möchte und ab diesem bis zum Ende des Eintrags die Schrift in der Zelle einfärben möchte.
Trotzdem danke für deinen Versuch zu unterstützen und den Code den du mir zur Verfügung gestellt hast, auch wenn er mir bei meinem Grundproblem nicht weiter hilft.
Viele Grüße Sebbo
Hallo Ralf,
es handelt sich bei der Excel Datei um die Vorlage eines Arbeitsdokuments, welche wir zum tracken von "Actions" zu jeweiligen Themen nutzen. Jede "Action" in eine eigene Zeile zu schreiben würde das Dokument sehr schnell sehr unübersichtlich machen.
Wie du schon sagtest, wäre die Auswertung dann zwar ein Klacks, aber ich wollte es eben auf die von mir beschriebene Weise lösen. Wie es scheint, ist dies aber auch mit VBA nicht so einfach zu lösen wie erhofft/gedacht.
Viele Grüße Sebbo
Registriert seit: 04.11.2014
Version(en): Office 365 Beta
Hi, Zitat:...den Code den du mir zur Verfügung gestellt hast, auch wenn er mir bei meinem Grundproblem nicht weiter hilft. Das wiederum verstehe ich nicht. Wenn man davon ausgeht, dass die letzte Zeile immer das aktuellste Datum enthält, macht der Code genau das, was Du möchtest.Ich hätte ihn zwar als 1-Zeiler codiert: Code: Sub letzte_Zeile_gruen() ActiveCell.Characters(Start:=InStrRev(ActiveCell, vbLf), Length:=999).Font.Color = 5287936 End Sub
was aber nichts an der Funktionalität ändert. Oder ist es nicht immer gegeben, dass das aktuellste auch das letzte Datum in der Zelle ist?
Registriert seit: 14.02.2022
Version(en): XL
18.02.2022, 15:31
(Dieser Beitrag wurde zuletzt bearbeitet: 18.02.2022, 15:40 von Kronos.)
Hallo Sebbo,
vielen Dank für Deine Antwort, auf die ich nur kurz eingehen möchte. Den angeblich nicht zutreffenden Vorwurf der mangelnden Mitarbeit führst Du gleich im nächsten Satz Deines Beitrages ad absurdum, weil aus Deiner Sicht das Hochladen einer Beispieldatei "nichts gebracht hätte". Was ist mangelnde Mitarbeit, wenn nicht das? Außerdem scheinst Du ja ein anderes Problem zu haben, denn Du redest von einem Grundproblem, von dem bisher nicht die Rede war. Neben ungenügender Mitarbeit werden wir von Dir auch noch wissentlich in die Irre geführt. Das führt nur dazu, dass zumindest ich von weiterer Kommunikation mit Dir absehen werde.
Weiterhin viel Erfolg bei Deinem Projekt.
@{Boris}: Man kann den Code kürzer fassen, aber so wird IMHO jeder dieser trivialen Schritte ausführlich erklärt, um den geneigten Leser beim Verständnis zu unterstützen
K.
|