Grundlagen der Programmierung mit VBA Visual Basic for
Grundlagen der Programmierung mit VBA Visual Basic for
Grundlagen der Programmierung mit VBA Visual Basic for
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