Excel Werte Blinken lassen.

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!


Iamiam  15.02.2012, 23:40

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!

0
Iamiam  15.02.2012, 23:47
@Iamiam

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

0
Iamiam  16.02.2012, 00:11
@Iamiam

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.

0
Iamiam  17.02.2012, 11:22
@Iamiam

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

0

Das geht imho nur über VBA.
Wenn Du Anfänger in Excel bist: Vergiss es! Ist eh nur "Spielerei".

Woher ich das weiß:Berufserfahrung – IT-Administrator (i.R.)

augsburgchris  15.02.2012, 09:13

Oder man baut die Zielzelle in ein Auto ein und versucht dann rechts oder links abzubiegen.

0
Iamiam  16.02.2012, 17:14
@augsburgchris

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!)

0

Das geht nur mit einem VBA Makro, das du dir schreiben musst. Beispiele dazu gibts im Internet genügend