Excel Werte Blinken lassen.
Könnte mir jemand einen Tipp geben? Ich möchte das in einer EXCEL Tabelle die in der Zelle enthaltenenen Werte durch BLINKEN hervorstechen. Angenommen in Zelle "B2" steht ein Wert und der soll Rot Blinken das er sofort ins Auge fällt. Danke alle schon im voraus LG fummel
4 Antworten
ich kann zwar Oubyi nur zustimmen: es ist eine Spielerei, aber als homo ludens darf man auch das. Und ich wenigstens hab dabei wieder was dazugelernt. Um das Makro in die Datei zu bekommen, musst Du die Blattnamensfahne mit Rechtsklick nehmen, im sich öffnenden VBA-Editor auch Einfügen Modul gehen ind im Modul das einkopieren (das Option Explizit überschreiben, falls es auftaucht, denn es ist hier nochmals drin. Nach dem Einkopieren den Blattnamen (3.Zeile des Makros) anpassen, die Anführungszeichen nicht unter den Tisch fallen lassen!
Option Explicit 'bedeutet: Variablendeklaration erforderlich. dringend empfohlen wegen besserer Fehlersuche!
Sub Blinkmakro()
Dim Wartenbis, NeuZeit As Date, HiGruFa, FontFa, BlaNam
Const Frequenz As Date = "00:00:05"
BlaNam = "aktuelle-Zeit, µ"
HiGruFa = ThisWorkbook.Worksheets(BlaNam).Range("B2").Interior.Color 'hält Füllfarbe fest(als RGB)
FontFa = ThisWorkbook.Worksheets(BlaNam).Range("B2").Font.Color ' hält Schriftfarbe fest(als RGB)
' Startzeit auf Variable schreiben:
Wartenbis = Format(Now() + 0.000008, "hh:mm:ss") 'kleiner als 0,000008 (ca 0,7 sec) => Fehler, der weitere Bearb verhindert. Strg+Pause drücken!
ThisWorkbook.Worksheets(BlaNam).Range("B2").Interior.ColorIndex = 3 'Farbindex 3=rot
ThisWorkbook.Worksheets(BlaNam).Range("B2").Font.ColorIndex = 6 'Farbindex 6=gelb
Application.Wait Wartenbis
ThisWorkbook.Worksheets(BlaNam).Range("B2").Interior.Color = HiGruFa
ThisWorkbook.Worksheets(BlaNam).Range("B2").Font.Color = FontFa
NeuZeit = Now + Frequenz
'Debug.Print "Zµ: " & Time & "..." & Format(NeuZeit, "hh:mm:ss") '<damit lässt sich dieaktuelle Wiederholrate bzw dasfunktionieren überhaupt feststellen
' aufrufen des Makros alle 5 Sekunden
Application.OnTime NeuZeit, "Blinkmakro"
End Sub
Bevor Diu das Makro aufrufst, speichere Deine gesamte Arbeit, es könnten unerwartete Nebenwirkungen auftreten: zB wenn Du in einem Textfeld aktiv bist, könnte ALLES blockieren: da hilft bestenfalls : Taskmgr(Strg+Alt+Entf) und Anwendung sofort beenden, schlimmstenfalls abfahren, Neustart.
Aufrufen: irgendwo gibts einen Button Makros mit der Option Anzeigen, dann auswählen, mit Doppelklick oder sonstwie starten. Ich habe die Wait-Zeit so kurz wie möglich gemacht, denn währenddessen wird xl-Arbeit unterbrochen. Die Einheit ist der TAG, 0,000008 ist knapp eine Sekunde (ca. 0,7).
Die Frequenz kannst Du kürzer oder länger machen (in Maßen).
Viel Spass!
PS: Weshalb dieser Editor hier Teile des Codes als solchen erkennt und andere nicht, ist das Geheimnis von GF. Ich hoffe, das auskopieren geht trotzdem! Kannst es ja erstmal in ein Textfeld oder im Editor oder Word versuchen,wenn es wirklich nicht direkt gehen sollte!
Option Explicit 'bedeutet: Variablendeklaration erforderlich. dringend empfohlen wegen besserer Fehlersuche!
Sub Blinkmakro()
Dim Wartenbis, NeuZeit As Date, HiGruFa, FontFa, BlaNam
BlaNam = "aktuelle-Zeit, µ"
HiGruFa = ThisWorkbook.Worksheets(BlaNam).Range("B2").Interior.Color 'hält Füllfarbe fest(als RGB)
FontFa = ThisWorkbook.Worksheets(BlaNam).Range("B2").Font.Color ' hält Schriftfarbe fest(als RGB)
Const Frequenz As Date = "00:00:05"
' Startzeit auf Variable schreiben:
Wartenbis = Format(Now() + 0.000008, "hh:mm:ss") 'kleiner als 0,000008 (ca 0,7 sec) => Fehler, der weitere Bearb verhindert. Strg+Pause drücken!
ThisWorkbook.Worksheets(BlaNam).Range("B2").Interior.ColorIndex = 3 'Farbindex 3=rot
ThisWorkbook.Worksheets(BlaNam).Range("B2").Font.ColorIndex = 6 'Farbindex 6=gelb
Application.Wait Wartenbis
ThisWorkbook.Worksheets(BlaNam).Range("B2").Interior.Color = HiGruFa
ThisWorkbook.Worksheets(BlaNam).Range("B2").Font.Color = FontFa
NeuZeit = Now + Frequenz
'Debug.Print "Zµ: " & Time & "..." & Format(NeuZeit, "hh:mm:ss") '<damit lässt sich dieaktuelle Wiederholrate bzw dasfunktionieren überhaupt feststellen
' aufrufen des Makros alle 5 Sekunden
Application.OnTime NeuZeit, "Blinkmakro"
End Sub
könnte sein, dass das Makro Schwierigkeiten beim Schließen macht. In diesem Fall setzt Du vor den Namen: Blinkmakro einfach ein x oder sonst ein Zeichen, dan findet die Schleife den Anfang nicht mehr. Die resultierende Fehlermeldung kannst du ignorieren. Nur das nächste Mal drandenken, das x wieder wegzumachen! Aufruf geht dann auch nach drücken des blauen Vierecks durch Drücken des blauen (oder grünen) Dreieckchens.
hab hier noch eine Alternative, die beim Schließen keine Probleme macht:
Sub auto_open() 'http://www.gutefrage.net/frage/excel-werte-blinken-lassen
blinkenZellHiGru 'das Auto_open ruft das Blinkmakro beim Öffnen auf
End Sub
Sub blinkenZellHiGru() 'weiterentwickelt nach Jörg Lorenz: lorenz@joerglorenz.de w&ww.spotlight.de/ewf-faq w&ww.joerglorenz.de (das & wg. Spam)
Dim BlaNam, ZellAdr
BlaNam = "Tabelle1"
ZellAdr = "B2"
If Worksheets(BlaNam).Range(ZellAdr).Interior.ColorIndex = 3 Then
Worksheets(BlaNam).Range(ZellAdr).Interior.ColorIndex = 6
Worksheets(BlaNam).Range(ZellAdr).Font.ColorIndex = 1
Else
Worksheets(BlaNam).Range(ZellAdr).Interior.ColorIndex = 3
Worksheets(BlaNam).Range(ZellAdr).Font.ColorIndex = 4
End If
Application.OnTime Now + TimeSerial(0, 0, 1), "blinkenZellHiGru"
End Sub
Ein Beispiel in VBA:
http://ms-excel.eu/vba/excel-vba-automatisch/vba-zelle-blinkt-automatisch.html
Das geht imho nur über VBA.
Wenn Du Anfänger in Excel bist: Vergiss es! Ist eh nur "Spielerei".
Oder man baut die Zielzelle in ein Auto ein und versucht dann rechts oder links abzubiegen.
den Gedanken versteh ich nicht! ???
Achso, Du meinst nicht ein Auto-Open, sondern ein echtes Auto, das beim Abbiegen blinkt. grins... (bin manchmal etwas schwer von begriff!)
Das geht nur mit einem VBA Makro, das du dir schreiben musst. Beispiele dazu gibts im Internet genügend
Dieser Editor ist die reine Katastrophe! Obwohl ich alle Umbrüche doppelt hatte, führt er jetzt Zeilen zusammen, und dann gehts in VBA nicht mehr. Ich versuche das mit dreifach-Umbrüchen zu versehen und den reinen Cde nochmal zu schicken!