31.01.2013 Aufrufe

Grundlagen der Programmierung mit VBA Visual Basic for

Grundlagen der Programmierung mit VBA Visual Basic for

Grundlagen der Programmierung mit VBA Visual Basic for

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

3.9 Zeitgesteuerte Auführung von Routinen<br />

Mit <strong>der</strong> Methode OnTime() können Ereignisse zu einem bestimmten Zeitpunkt aktiviert werden. Während<br />

<strong>der</strong> Wartezeit gibt das Programm die Kontrolle an den Anwen<strong>der</strong> zurück, d.h. <strong>der</strong> Computer ist<br />

freigegeben und man kann in <strong>der</strong> Zwischenzeit etwas an<strong>der</strong>es <strong>mit</strong> Excel machen.<br />

Beispiel. Zeitgesteuerte Ampelschaltung. Vom Datenblatt wird die Dauer <strong>der</strong> verschiedenen Ampelphasen<br />

in Sekunden eingelesen. Die Zeitsteuerung startet <strong>mit</strong> <strong>der</strong> Rot-Phase. Dabei wird das Rotlicht<br />

angeschaltet und <strong>der</strong> "Timer" für die Gelb-Phase <strong>mit</strong> <strong>der</strong> Dauer <strong>der</strong> Rot-Phase gestartet. Die Gelb-<br />

Phase startet den Timer für die Grün-Phase, usw. Das Vorgehen wird im Programm-Code am besten<br />

erklärt.<br />

Dim Zeitschaltung As Boolean ' Projektvar.: Indikator für Zeitschaltung<br />

' die Timer werden nur gestartet wenn <strong>der</strong><br />

' Indikator gesetzt ist.<br />

Dim Scheduled ' Name <strong>der</strong> nächsten Phase<br />

Sub ZeitSchalt_Start() ' Zeitschaltung starten,<br />

' <strong>mit</strong> Rot-Phase beginnen<br />

Dim phs As Long<br />

50<br />

Zeitschaltung = True ' Indikator setzen<br />

phs = Range("Rotphase").Value ' Länge <strong>der</strong> Rot-Phase lesen<br />

Halt ' Ampel auf Rot schalten<br />

' Name <strong>der</strong> nächsten Phase setzen<br />

Scheduled = "ZeitSchalt_Achtung_Fahrt"<br />

' Timer für nächste Phase starten<br />

Application.OnTime _<br />

earliesttime:=Now + TimeValue("00:00:" & phs), _<br />

procedure:=Scheduled, _<br />

schedule:=True<br />

End Sub<br />

Sub ZeitSchalt_Achtung_Fahrt() ' Rot-Gelb-Phase<br />

Dim phs As Long<br />

' Prozedur wird nur ausgeführt,<br />

' wenn Indikator gesetzt<br />

If Not Zeitschaltung Then Exit Sub<br />

phs = Range("Gelbphase").Value ' Länge <strong>der</strong> Gelb-Phase lesen<br />

AchtungFahrt ' Ampel auf Rot-Gelb schalten<br />

' Name <strong>der</strong> nächsten Phase setzen<br />

Scheduled = "ZeitSchalt_grün"<br />

' Timer für nächste Phase starten<br />

Application.OnTime _<br />

earliesttime:=Now + TimeValue("00:00:" & phs), _<br />

procedure:=Scheduled, _<br />

schedule:=True<br />

End Sub<br />

Sub ZeitSchalt_grün() ' Grün-Phase<br />

Dim phs As Long<br />

Dim Richtung As Long<br />

If Not Zeitschaltung Then Exit Sub ' Indikator ?<br />

phs = Range("Grünphase").Value ' Länge <strong>der</strong> Grünphase<br />

Richtung = Range("Richtung").Value ' Fahrtrichtung für Auto lesen

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!