Resize Home Kontakt Skip down

Eine Analoguhr in Excel


Excel tickt richtig

Der umfangreiche Vorrat an Schlüsselwörtern in VisualBasic öffnet weite Horizonte. Die Anweisung BeiZeit / OnTime ruft nach einer beliebigen Zeitspanne beliebige Funktionen auf. Was liegt da näher als mit den Mitteln von Excel eine Uhr zu konstruieren? Lesen Sie, wie diese Idee auf verschiedene Weise realisiert wurde (Heft-CD). Gestalten Sie Ihre eigene Uhr und lassen Sie sie ticken, während Sie andere Anwendungen benutzen.

Die Idee ist einfach: In einer Tabelle liefert die Excel-Funktion JETZT() die Systemzeit und damit auch Werte für Stunde, Minute und Sekunde. Die Tabellenzellen für die Zeiger beziehen sich darauf. Ist die Tabelle vollständig, stellt man ihre Werte in einem Diagramm dar. Mit der BeiZeit- / OnTime-Anweisung eines Makros wird in regelmäßigen Abständen die Tabelle aktualisiert und damit auch die aktuelle Uhrzeit angezeigt.

Skip down Skip up Zum Seitenanfang

Uhr 1: praktische Mathematik

Tabelle. Aus Stunden-, Minuten- und Sekundenwert lassen sich - ein Dank an die Geometrie, insonderheit an die Zahl PI, den Sinus und den Cosinus - Werte auf einem Kreis berechnen. Hat nicht ein vollständiger Kreis einen Umfang von 2 mal PI mal Radius? Da entfiele, durch 60 geteilt, auf jeden Teilstrich eines Zifferblatts PI mal Radius durch 30. Die Radien sind natürlich die Zeiger, versteht sich, deren unterschiedliche Größe mit einem Faktor bewirkt wird: mal 1 für den Sekundenzeiger, mal 0,9 für den Minutenzeiger, mal 0,56 für den Stundenzeiger. Aber vielleicht haben Sie einen anderen Geschmack. Bitte, variieren Sie die Formeln.

Denkt man sich die Uhr als ein Koordinatensystem, so liegt der Ursprung jedes Zeigers bei x = 0 und y = 0, die Spitze bei x = Sinus(PI mal Radius durch 30) und y = Cosinus(PI mal Radius durch 30). Leider rechnen nicht alle Excel-Versionen genau. Es kann vorkommen, daß dort, wo 0 herauskommen soll, nur fast 0 herauskommt und damit z.B. um 12 Uhr die Zeiger nicht genau übereinanderliegen. Solche Kleinigkeiten stören ungemein, auch wenn alle Formeln richtig sind. Deswegen wird zur Sicherheit das Ergebnis auf 10 Stellen gerundet. (Beim Programmieren passieren ständig solche unvorhergesehenen Ereignisse. Man muß ihnen auf den Grund gehen und dann eine passende Antwort einbauen.)

Zwei Schwierigkeiten sind zu meistern: Erstens wandert der Stundenzeiger zwischen den vollen Stunden, so daß auf den Stundenwert der Minutenwert, geteilt durch 12, addiert werden muß. Und zweitens passen (gewöhnlich) nicht mehr als zwölf Stunden auf ein Zifferblatt. Da hält die Mathematik die Modulo-Berechnung bereit, in Excel entspricht sie der Funktion Rest(). Sie läßt hier die Stunden nicht über 11 hinauskommen, sondern fängt dann wieder bei 0 an. Schauen Sie sich die Tabelle an. Sie werden jetzt alle Formeln verstehen.


Hier dieselbe Tabelle mit einer Beispieluhrzeit.

Diagramm. Die X- und Y-Werte der Tabelle werden nun mit einem Punktdiagramm dargestellt. Jede Datenreihe (Stunde, Minute, Sekunde, Zifferblatt) wird separat in das Diagramm aufgenommen. Anschließend wird das Diagramm nach Gusto formatiert.

Makro. Bei der Verwendung von selbstaufrufenden Funktionen ist Vorsicht geboten. Weniger beim Starten - z.B. durch automatischen Aufruf beim Öffnen der Datei, beim Klicken auf das Diagramm oder eine Schaltfläche - als vielmehr beim Stoppen, spätestens beim Schließen der Datei. Nichts ist unangenehmer als eine gerade geschlossene Datei, die sich immer wieder von selbst öffnet, weil die noch offene Makroanweisung ausgeführt werden will. Je gründlicher man alle möglichen Bedingungen bei der Konstruktion berücksichtigt und testet, desto zuverlässiger wird das Ergebnis sein. Ändern Sie aber nichts am Quellcode, während die Uhr läuft.

Skip down Skip up Zum Seitenanfang

Uhr 2: die Vielfältige

Tabelle. Um den Reichtum der Diagrammarten auszuschöpfen, wurde hier den Zeigern und dem Zifferblatt je 60 Werte zugeordnet. Die Stundenwerte werden dabei mit 5 multipliziert. Darauf bauen drei Datenreihen für den Stundenzeiger auf: Bei einer springt er tatsächlich nur von Stunde zu Stunde, bei einer rückt er zu den Minuten 0, 12, 24, 36 und 48 vor, bei der dritten zu den Minuten 6, 18, 30, 42 und 54. Je nach Geschmack lassen sich also Uhren bauen, bei denen der Stundenzeiger zur vollen Stunde vor oder auf der 12 auf den Minutenzeiger wartet. Wenn das keine Detailarbeit ist. Mathematische Operationen mit Sinus und Co. entfallen hier, weil die graphische Umsetzung Excel überlassen wird. Jede Tabellenzelle vergleicht den aktuellen Stunden-, Minuten- und Sekundenwert mit einem der 60 möglichen Werte. Stimmt er überein, wird ein großer Wert für die jeweilige Zeigergröße vorgesehen, ansonsten 0.

Diagramme. Die Tabellenwerte eignen sich nun für jeden Diagrammtyp. Probieren Sie es aus.

Skip down Skip up Zum Seitenanfang

Verfeinerungen

Wilhelm Busch (1832-1908) "Ein jeder Wunsch, wenn er erfüllt, kriegt augenblicklich Junge", wußte Wilhelm Busch und weiß jeder Programmierer. In den verfeinerten Uhren werden Werte aus Zellen verarbeitet, in die der Benutzer Eintragungen machen kann. Diese Zellen sind farbig hinterlegt und ihr Schutz ist aufgehoben. Ein geschütztes Tabellenblatt erlaubt nur hier Veränderungen und verhindert sie woanders, besonders bei den Formeln.

Zeitzone. Der Wert einer Zelle, die für die Abweichung von der Ortszeit vorgesehen ist, wird zum Stundenwert addiert. Kommen dabei unsinnige Werte unter 0 und über 11 heraus, macht das nichts. Die Modulo-Berechnung bringt auch diese Werte wieder in den richtigen Bereich.


Wecker. Prinzipiell ist jedem klar, daß eine vorgegebene Uhrzeit mit der tatsächlichen verglichen wird. Wenn sie übereinstimmt, passiert irgend etwas. Genau diesen Worten folgt die Programmierung. Für die Weckzeit sind drei Zellen für Stunde, Minute und Sekunde vorgesehen. Der Vergleich findet in der Zelle rechts daneben statt.


Erschrecken Sie nicht vor der Formel. Sie vergleicht nicht nur die Werte, sondern sieht auch für den Fall fehlender Werte eine sinnvolle Reaktion vor. Wer bei der Weckerstunde 12 einträgt, meint natürlich 12 Uhr, 0 Minuten, 0 Sekunden. Wer bei der Weckersekunde 0 einträgt, will wahrscheinlich zu jeder vollen Minute ein Signal erhalten. Wer nichts einträgt, will nichts. Alle diese Möglichkeiten werden berücksichtigt. Hier sehen Sie auch deutlich, daß sprechende Bereichsnamen für Zellen sehr hilfreich beim Verständnis und beim Programmieren sein können. Werden je eine Bedingung für Stunde, Minute und Sekunde wahr, so wird als Ereignis eine benutzerdefinierte Funktion Wecker() aufgerufen, die man im Quellcode bequem nach Belieben gestalten kann.



Zeigergröße. Die Formelwerte für die Zeigergröße sind hier variabel und abhängig von dem Inhalt mehrerer Zellen. Ein Benutzer kann so leicht ohne Kenntnis der Tabellenkonstruktion und Formeln Zeigerursprung, Zeigergröße und Zifferblattmarkierungen verändern.



Hinweis. Beim Schließen der Datei wird durch eine Anweisung im Quellcode die Nachfrage verhindert, ob Sie die Datei speichern wollen. Das entspricht den Bedürfnissen eines Anwenders am ehesten. Wenn Sie allerdings Veränderungen an der Uhr vornehmen, vergessen Sie nie vor dem Schließen das Speichern.

Skip down Skip up Zum Seitenanfang

Veröffentlichung

Wem die Stunde schlägt: Excel mit Analoguhr. Computer easy - Sonderheft Excel Praxis. 6. Excel-Ausgabe 2002

Der Text wurde in redaktionell bearbeiteter Form unter dem Titel "Wem die Stunde schlägt: Excel mit Analoguhr" veröffentlicht in Computer easy - Sonderheft Excel Praxis. 6. Excel-Ausgabe 2002 S. 72-74.

Skip up Zum Seitenanfang
(gf)-Webdesign Düsseldorf © Georg Frevel info@gf-webdesign.de Mail