welche Zelle, mehr als eine Zelle würde ich Vermuten ist recht aufwendig. Aber vielleicht hat Ralf noch den Code???
Gruß Hajo
Ich habe es gerade gelesen das Du die Gesamte Spalte R ab Zeile 4 blinken lassen willst. Die Bedingung ist mir bloß noch nicht klar??
Aber ich muß auch schreiben, das mir der Aufwand dafür erheblich zu groß ist.
Leider
Gruß Hajo
In Spalte R.. steht für jeden Auftrag ein Datum.
Wenn das eingetragene Datum also kleiner gleich heute (aktuelles Tagesdatum)+5 Tage ist soll die Zelle R.. binken und am besten noch wenn die Zelle S.. daneben leer ist. Wenn dann in S.. ein Datum eingetragen wird blinkt die Zelle in R.. nicht mehr.
Ist viel verlangt aber auch eine Herausforderung
Gruß Peter
es haben auch mehrere andere Benutzer den ersten Beitrag über die blinkende Zelle gelesen.
Falls es jetzt so rüber gekommen ist das Du für die Beiträge von Ralf büssen mußt. Entschuldige ich mich dafür. Dies ist nicht der Fall.
Du hast schon recht das es eine interessante Aufgabe ist. Aber ich weiß noch wie lange ich an meiner Lösung für eine blinkende Zelle gearbeitet habe.
Meine zweite Variante dazu, hatte folgende Aufgabe:
es werden in Tabelle1 fünf Zahlen eingetragen und in Tabelle2 blinken alle diese Zahlen in einem Bereich.
Ich habe morgen leider keine Zeit, da ich andere wichtige Aufgaben erledigen muß, die wichtiger sind als das Forum.
Gruß Hajo
Warum so gereitzt?
Vielleicht mach ich ja einen Denkfehler, das das was mit bedingten Formatierungen funktioniert nicht in VBA umsetzbar ist.
Trotzdem wär es eine tolle Sache, wenn statt roter Schrift die Zelle blinken würde. Die datei ist eine Server-Datei, wo viele Nutzer zugreifen und jeder durch blinkende Zellen an seinen Termin erinnert wird.
Mit freundlichen Grüßen
Peter
vielleicht machst Du wirklich einen Denkfehler. Bedingte Formatierungen für einzelne Zellen/Spalten/Zeilen lassen sich schon mit VBA umsetzen. Aber Blinken ist nun mal keine Formatierung (zumindest ist mir in Excel 97 Blinken als Zellformat nicht bekannt).
Da muss also, allein um das Blinken zu realisieren ein VBA-Code herhalten. Das bremst aber nur, wie Ralf Sögel schreibt die Geschwindigkeit aus, mit der man in der Tabelle arbeiten kann. Und wenn dann auch noch die Bedingugen für viele Nutzer abgefragt werden müssen ist es wohl besser, auf diese "Spielerei" zu verzichten.
Gruß
Peter
wir haben schon alle (oder fast alle) den ganzen Tag im Forum gearbeitet und da können solche Beiträge von Ralf schon die Stimmung zum Kochen bringen. Du hattest jetzt das Pech, das Du Deine Frage auf diesen Beitrag aufgebaut hast. Du konntest jetzt nichts dafür. Ich kann Dir bloß versprechen ich werde mich bessern.
folgende Annahmen zu Deinem Problem:
- in Spalte R sind ab Zeile 4 keine Hintegrund formatierungen eingesetzt (Farbe)
- wenn das Datum in Spalte R kleiner als Heute()-5 und Spalte S verschieden von leer blinkt die entsprechende Zelle
- das blinken erfolgt im Sekunden Abstand, dabei sind aber die Hinweise von Peter und Ralf zur Rechenleistung zu beachten.
folgende Ansatz Private Sub Workbook_BeforeClose(Cancel As Boolean) Private Sub Workbook_Open() Sub ersteFarbe() Sub zweiteFarbe() Sub Ende()
Code eingefügt mit Syntaxhighlighter 1.16
in DieseArbeitsmappe
Option Explicit
Ende
ThisWorkbook.Worksheets("Betriebsaufträge").Range("R:R").Interior.ColorIndex = xlNone
End Sub
ersteFarbe
End Sub
in ein Modul
Option Explicit
Public ET As Variant
Public I As Integer, J As Integer
Public Zelle
Public C As Range
Dim LoLetzte As Long
If [R65536] = "" Then
LoLetzte = [R65536].End(xlUp).Row
Else
LoLetzte = 65536
End If
ThisWorkbook.Worksheets("Betriebsaufträge").Range("R4:R" & LoLetzte).Interior.ColorIndex = xlNone
For Each C In ThisWorkbook.Worksheets("Betriebsaufträge").Range("R4:R" & LoLetzte)
If C.Value <> "" Then
If CDate(C.Value) < Date - 5 And Cells(C.Row, 19) <> "" Then
C.Interior.ColorIndex = 3
End If
End If
Next C
ET = Now + TimeValue("00:00:01")base
Application.OnTime ET, "zweiteFarbe"
End Sub
Dim LoLetzte As Long
If [R65536] = "" Then
LoLetzte = [R65536].End(xlUp).Row
Else
LoLetzte = 65536
End If
ThisWorkbook.Worksheets("Betriebsaufträge").Range("R4:R" & LoLetzte).Interior.ColorIndex = xlNone
For Each C In ThisWorkbook.Worksheets("Betriebsaufträge").Range("R4:R" & LoLetzte)
If C.Value <> "" Then
If CDate(C.Value) < Date - 5 And Cells(C.Row, 19) <> "" Then
C.Interior.ColorIndex = 33
End If
End If
Next C
ET = Now + TimeValue("00:00:01")
Application.OnTime ET, "ersteFarbe"
End Sub
On Error Resume Next
Application.OnTime EarliestTime:=ET, Procedure:="ErsteFarbe", Schedule:=False
Application.OnTime EarliestTime:=ET, Procedure:="zweiteFarbe", Schedule:=False
ET = ""
End Sub
Man entfacht mittels Makro eine fortlaufende Uhrzeit mit Sekundenanzeige, in einem Modul.
Sub Berechnen()
Calculate
Call Zeit
End Sub
Sub Zeit()
Application.OnTime Now _
+ TimeValue("00:00:01"), _
"Berechnen"
End Sub
Dieses Modul sollte durch ein Startmakro in der jeweiligen Arbeitsmappe angesprochen werden. (Wie das geht, weiß ich aber nicht). Sprich: es läuft dann in Zelle A1 in der Tabelle durch die Formel „=jetzt()“ eine Uhrzeit, sekundengenau. Dann habe ich in Zelle A2 die Formel: „=sekunden(a1) nur die Sekunden herausgefiltert und mit „=rechts(b1)“ nur noch die letzte Stelle der Sekunden.
Grundidee ist nun: Gerade Sekundenzahl – ungerade Sekundenzahl = Wahr – Falsch.
Der Rest dürfte dann ja wohl ein Kinderspiel sein, die jeweilige Bedingung danach durch „Bedingte Formatierung“ zu erfüllen und blinken zu lassen.
Wie gesagt, es gibt da aber ein Problem . Das Zeitmakro verhindert das Schließen der Tabelle, besser gesagt sie startet sofort wieder neu.
Wer weiß Rat. Es ist zwar kein sauberer aber ein unkonventioneller Weg. Man könnte quasi mehrere Zellen zum Blinken bringen. Übrigens eine Bemerkung zum „Blinken“: es ist wirklich sehr wichtig, unbedarfte Anwender übersehen sehr viel und auch sehr häufig. Einfache bedingt Formatierung helfen da wirklich nicht, ich spreche aus Erfahrung.
Nochmals Danke für die Hilfe.
Gruß
Andrea
erstmal schönen Dank für die Mühe.
habe alles ausprobiert und habe noch ein paar Probleme.
1. Wenn in Spalte S kein Wert sondern leer und der Termin in Spalte R ist Kleiner gleich +5 aktuelles Tagesdatum, dann soll in Spalte R der Wert Blinken und zwar nicht die Füllfarbe sondern die Schrift rot.
Jetzt blinkt Spalte R wenn S einen Wert hat.
habe schon ein bischen umgestellt und auch kleine Erfolge erzielt.
Nun kommt durch die Umstellung auf Schrift folgendes Ereignis dazu:
Wenn ich einen Filter in Spalte S auf "Leere" setzte blinkt und flackert die ganze Datei.
gerne würde ich Dir mal die Datei zumailen bei Interesse
mfg
Peter
vom grundsatz sollen Problem im Forum geklärt werden. Ändere fogende Code
Gruß Hajo
hab doch noch ein kleines Problem!
Wenn in Spalte S ein Wert steht wird in Spalte R alles fett Blau.
Hab den Code geändert doch wenn ich einen Filter aus Leere setze
fimmert das Bild.
Option Explicit
Public ET As Variant
Public I As Integer, J As Integer
Public Zelle
Public C As Range
Sub ersteFarbe()
Dim LoLetzte As Long
If [R65536] = "" Then
LoLetzte = [R65536].End(xlUp).Row
Else
LoLetzte = 65536
End If
ThisWorkbook.Worksheets("Betriebsaufträge").Range("R3:R" & LoLetzte).Interior.ColorIndex = xlNone
For Each C In ThisWorkbook.Worksheets("Betriebsaufträge").Range("R3:R" & LoLetzte)
If C.Value <> "" Then
If CDate(C.Value) <= Date + 5 Then
If Cells(C.Row, 19) <> "" Then
C.Font.ColorIndex = 32 ??????????
C.Font.Bold = True
Else
C.Font.ColorIndex = 3
C.Font.Bold = True
End If
End If
End If
Next C
ET = Now + TimeValue("00:00:01")
Application.OnTime ET, "zweiteFarbe"
End Sub
Sub zweiteFarbe()
Dim LoLetzte As Long
If [R65536] = "" Then
LoLetzte = [R65536].End(xlUp).Row
Else
LoLetzte = 65536
End If
ThisWorkbook.Worksheets("Betriebsaufträge").Range("R3:R" & LoLetzte).Interior.ColorIndex = xlNone
For Each C In ThisWorkbook.Worksheets("Betriebsaufträge").Range("R3:R" & LoLetzte)
If C.Value <> "" Then
If CDate(C.Value) <= Date + 5 Then
If Cells(C.Row, 19) <> "" Then
C.Font.ColorIndex = 32 ??????????
C.Font.Bold = True
Else
C.Font.ColorIndex = 1
C.Font.Bold = True
End If
End If
End If
Next C
ET = Now + TimeValue("00:00:01")
Application.OnTime ET, "ersteFarbe"
End Sub
Sub Ende()
On Error Resume Next
Application.OnTime EarliestTime:=ET, Procedure:="ErsteFarbe", Schedule:=False
Application.OnTime EarliestTime:=ET, Procedure:="zweiteFarbe", Schedule:=False
ET = ""
End Sub
Vieleicht gibt es da auch eine Lösung
Gruß Peter
das mit dem blau kennzeichnen ohne Blinken hättest Du jetzt auch einfacher machen können mit Bedingter Formatierung.
Das flimmern kann ich nicht nachvollziehen.
Gruß Hajo