Clever-Excel-Forum

Normale Version: Schrift in Zelle teilweise einfärben in Abhängigkeit zum Datum
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
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
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.
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
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?
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
 
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.
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:
ABC
1ZelleDatumText
2124.12.2021Es ist Weihnachten
3131.12.2021Heute ist Silvester
4115.02.2022Morgen 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
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
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?
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.
Seiten: 1 2