Schriftfarbe ändern, basierend auf Datum mit VBA in Microsoft Excel
In diesem Artikel verwenden wir das Arbeitsmappenereignis, um Daten hervorzuheben, die größer als das aktuelle Datum sind.
Die Rohdaten für dieses Beispiel bestehen aus dem täglichen Verkaufsziel und dem erreichten Ziel.
Wir möchten Tage hervorheben, die größer als das aktuelle Datum sind.
Logische Erklärung
In diesem Artikel haben wir zwei Makros erstellt, „SetColor“ und „ResetColor“.
Das Makro „SetColor“ wird verwendet, um Daten hervorzuheben, die größer als das aktuelle Datum sind.
Das Makro „ResetColor“ wird verwendet, um die Formatierung der angegebenen Quelle zurückzusetzen.
Wir haben zwei Arbeitsmappenereignisse verwendet, Arbeitsmappenöffnungsereignis und Arbeitsmappe vor Abschlussereignis.
Das Ereignis zum Öffnen der Arbeitsmappe wird ausgelöst, wenn die Arbeitsmappe geöffnet wird. Beim Öffnen der Arbeitsmappe wird automatisch das Makro „SetColor“ ausgeführt.
Die Arbeitsmappe vor dem Schließen des Ereignisses wird verwendet, um das mit dem Ereignis zum Öffnen der Arbeitsmappe verknüpfte Ereignis zurückzusetzen.
Code Erklärung
Wenn IsDate (ActiveCell.Value) und ActiveCell.Value> Date Then, wird mit dem obigen Code überprüft, ob der Wert in der Zelle vom Datumsdatentyp ist und größer als das aktuelle Datum ist.
ActiveCell.Interior.Color = RGB (0, 255, 0)
Der obige Code wird verwendet, um der aktiven Zelle eine grüne Farbe zuzuweisen.
Set Source = Range („A1“, Range („A1“). SpecialCells (xlCellTypeLastCell))
Der obige Code wird verwendet, um alle Daten in der Excel-Tabelle auszuwählen.
Bitte folgen Sie unten für den Code
Option Explicit Sub SetColor() If IsDate(ActiveCell.Value) And ActiveCell.Value > Date Then ActiveCell.Interior.Color = RGB(0, 255, 0) Else ActiveCell.Interior.Color = RGB(221, 235, 247) End If End Sub Sub ResetColor() 'Declaring variables Dim Rng, Source As Range Dim IntRow As Integer, IntCol As Integer 'Specifying all the cells as source range Set Source = Range("A1", Range("A1").SpecialCells(xlCellTypeLastCell)) 'Looping through all the cells For Each Rng In Source 'Checking whether cell contains a value If Not IsEmpty(Rng) Then 'Checking whether cell contain value of date data type If IsDate(Rng.Value) Then Rng.Select 'Assigning Green color if value is greater than today date If DateValue(Rng.Value) > Date Then ActiveCell.Interior.Color = RGB(0, 255, 0) Else ActiveCell.Interior.Color = RGB(221, 235, 247) End If End If End If Next Rng End Sub 'Insert below code in ThisWorkbook module Option Explicit Private Sub Workbook_Open() With Worksheets("Main") 'Event fired on entry to worksheet .OnEntry = "SetColor" 'Event fired on sheet activation .OnSheetActivate = "ResetColor" End With End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) With Worksheets("Main") .OnEntry = "" .OnSheetActivate = "" End With End Sub
Wenn dir dieser Blog gefallen hat, teile ihn mit deinen Freunden auf Facebook und Facebook.
Wir würden gerne von Ihnen hören, lassen Sie uns wissen, wie wir unsere Arbeit verbessern und für Sie verbessern können. Schreiben Sie uns unter [email protected]