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.