ich möchte beim Wechsel des Tabellenblatts einen bestimmten Zellbereich mit einem blinkenden Rahmen umgeben. Ist das möglich? wenn ja, was funktioniert so etwas?
Besten Dank im Voraus!
Liebe Grüße aus Schwabach
Michael
'Bereiche ggf. anpassen
'aktuelles Datum in A1, Bereich B1:E1
'Dieser Code in Tabelle2:
Option Explicit
Private Sub Worksheet_Activate()
If Range("A1").Value = Date Then rahmenAn
End Sub
Private Sub Worksheet_Deactivate()
blinkAus
End Sub
'Dieser Code in ein Modul:
Option Explicit
Public ET As Variant
Sub rahmenAn()
With Range("B1:E1").Borders
.LineStyle = xlContinuous
.Weight = xlMedium
End With
ET = Now + TimeValue("00:00:01")
Application.OnTime ET, "rahmenAus"
End Sub
Sub rahmenAus()
Range("B1:E1").Borders.LineStyle = xlNone
ET = Now + TimeValue("00:00:01")
Application.OnTime ET, "rahmenAn"
End Sub
Sub blinkAus()
On Error Resume Next
Application.OnTime EarliestTime:=ET, Procedure:="rahmenAn", Schedule:=False
Application.OnTime EarliestTime:=ET, Procedure:="rahmenAus", Schedule:=False
ET = ""
End Sub
Grüße
Option Explicit
Private Sub Worksheet_Activate()
Dim rngMonat As Range 'Variable für die Spalte mit dem aktuellen Monat
Set rngMonat = Cells.Find(Format(Date, "MMMM")) 'aktueller Monat wird gesucht und in die _
Variable geschrieben
Set rngTag = Cells.Find(Format(Date, "DD"), rngMonat) 'innerhalb der Spalte rngMonat (aktueller _
Monat) wird der heutige Tag gesucht
rahmenAn 'Prozedur zum blinken wird gestartet
End Sub
Private Sub Worksheet_Deactivate()
blinkAus 'alles ausschalten
End Sub
Dann fügst Du deinem Proj>ekt ein Modul zu und kopierst diese Makros da rein:
Option Explicit
Public rngTag As Range 'Globale Variable für die Zelle mit dem aktuellen Tag
Public ET As Variant 'Globale Variable für die Zeit fürs blinken
Sub rahmenAn()
With rngTag.Borders
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 3
End With
ET = Now + TimeValue("00:00:01")
Application.OnTime ET, "rahmenAus"
End Sub
Sub rahmenAus()
With rngTag.Borders
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 15
End With
ET = Now + TimeValue("00:00:01")
Application.OnTime ET, "rahmenAn"
End Sub
Sub blinkAus()
On Error Resume Next
Application.OnTime EarliestTime:=ET, Procedure:="rahmenAn", Schedule:=False
Application.OnTime EarliestTime:=ET, Procedure:="rahmenAus", Schedule:=False
ET = ""
End Sub
Nun wird bei jedem "betreten" der Tabelle1 das Makro "rahmenAn" gestartet und zieht einen dünnen, roten Rahmen um die Zelle und startet 1 Sekunde später das Makro "rahmenAus". In diesem Makro wird dann der Rahmen mit der Farbe grau gezogen.
Set rngTag = Cells.Find(Format(Date, "DD"), rngMonat) 'innerhalb der Spalte rngMonat (aktueller Monat) wird der heutige Tag gesucht
Den Monat findet Excel, aber für rngTag findet Excel immer den 15.01.2010.Um eine aktuelle Zelle in Excel mit einem blinkenden Rahmen zu versehen, kannst Du VBA (Visual Basic for Applications) verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:
Öffne den Visual Basic for Applications (VBA) Editor:
ALT + F11
, um den VBA-Editor zu öffnen.Füge ein neues Modul hinzu:
Einfügen
und wähle Modul
.Füge den folgenden VBA-Code in das Modul ein:
Option Explicit
Public rngTag As Range
Public ET As Variant
Sub rahmenAn()
With rngTag.Borders
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 3
End With
ET = Now + TimeValue("00:00:01")
Application.OnTime ET, "rahmenAus"
End Sub
Sub rahmenAus()
With rngTag.Borders
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = 15
End With
ET = Now + TimeValue("00:00:01")
Application.OnTime ET, "rahmenAn"
End Sub
Sub blinkAus()
On Error Resume Next
Application.OnTime EarliestTime:=ET, Procedure:="rahmenAn", Schedule:=False
Application.OnTime EarliestTime:=ET, Procedure:="rahmenAus", Schedule:=False
ET = ""
End Sub
Füge den folgenden Code in das Tabellenblatt ein, das Du verwenden möchtest (z. B. Tabelle1
):
Private Sub Worksheet_Activate()
Dim rngMonat As Range
Set rngMonat = Cells.Find(Format(Date, "MMMM"))
Set rngTag = Cells.Find(Format(Date, "DD"), rngMonat)
rahmenAn
End Sub
Private Sub Worksheet_Deactivate()
blinkAus
End Sub
Teste dein Makro:
Fehler: „Die Zelle mit dem aktuellen Datum wird nicht gefunden“:
Fehler: „Das Makro läuft nicht“:
Trust Center
und Trust Center-Einstellungen
tun.Fehler: „Blinken funktioniert nicht“:
Wenn Du keine VBA-Lösungen verwenden möchtest, kannst Du stattdessen:
Bedingte Formatierung verwenden: Auch wenn Du bereits Bedingungen belegt hast, kannst Du die Formatierung von Zellen anpassen, um wichtige Daten hervorzuheben.
Farben und Schriftarten ändern: Anstatt eines blinkenden Rahmens kannst Du die Hintergrundfarbe oder Schriftart der Zelle ändern, um die Aufmerksamkeit darauf zu lenken.
Hier ist ein einfaches Beispiel, wie das Blinken in einem Urlaubsplaner funktionieren kann:
Zellenstruktur: Spalte A enthält die Tage (1-31), während die nächsten Spalten die Monate darstellen. Die Zelle mit dem aktuellen Datum erhält den blinkenden Rahmen.
VBA-Code: Der oben angegebene Code wird verwendet, um den Rahmen um die Zelle mit dem aktuellen Datum zu aktivieren, wenn das Tabellenblatt aktiviert wird.
Optimierung des Codes: Du kannst den Code weiter optimieren, um die Blinkgeschwindigkeit zu ändern, indem Du den TimeValue
anpasst.
Verwendung von Farbvariablen: Anstatt feste Farben zu verwenden, kannst Du Variablen für die Rahmenfarben definieren, um die Anpassung zu erleichtern.
Fehlerprotokollierung: Implementiere eine einfache Fehlerprotokollierung, um eventuelle Probleme beim Ausführen des Makros leichter zu identifizieren.
1. Wie kann ich die Blinkgeschwindigkeit anpassen?
Um die Blinkgeschwindigkeit zu ändern, passe den Wert in TimeValue("00:00:01")
an. Zum Beispiel TimeValue("00:00:02")
für zwei Sekunden.
2. Kann ich das Makro auch für andere Zellen verwenden?
Ja, passe einfach den rngTag
-Bereich im Code an, um andere Zellen zu berücksichtigen.
3. Funktioniert dieses Tutorial in allen Excel-Versionen? Der VBA-Code sollte in den meisten modernen Excel-Versionen (Excel 2010 und später) funktionieren.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen