Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

Excel VBA für Profis: Klassen (Konzepte)

Die Stoppuhr-Klasse verbessern

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Da die Messgenauigkeit der Now-Funktion nicht besonders hoch ist, wird die Stoppuhr-Klasse intern verbessert. Sie greift nun auf die GetTickCount-Funktion zu, welche eine erheblich größere Messgenauigkeit besitzt.

Transkript

Sie haben es vielleicht schon gemerkt, die Genauigkeit die Messgüte dieser Stoppuhr ist bescheiden. Ohne die Anzeige der Statuszeile ist das Programm so schnell, dass es für diese Uhr gar nicht messbar ist. Da könnte man jetzt einfach hier die Zahl so deutlich, so drastisch erhöhen, dass selbst ohne StatusBar-Anzeige das messbar wird, aber dann werden Sie sehr, sehr lange warten müssen. Die bessere Lösung ist die Stoppuhr zu verbessern. Dieser Code bleibt hier völlig unangetastet, ich werde die Stoppuhr optimieren. Und zwar mit einer Funktion, die in Windows eingebaut ist, die ich also hier nur nutze und dafür muss ich sie erstmal bekannt machen, ich muss also Excel-VBA erstmal Bescheid sein, da gibt es eine Funktion, bitte gucke die hier an, wie die funktioniert und hole die deren Fähigkeiten. Das geht mit einem "private declare" und dann "function" und dann nenne ich den Namen der Funktion, die heißt "GetTickCount", hole die den Zähler den Ticker sozusagen, der steht in einer Library, die heißt "kernel32" und hat den Rückgabetyp "Long", Sie kriegen also kein Datumszeit-Objekt zurück, sondern eine Long-Zahl, deswegen muss man da gleich ein bisschen rum rechnen. Und diesen Wert merke ich mir, also ich werde hier keine Datumszeit-Objekt zurückkriegen, deswegen muss ich den Datentyp hier entsprechend ändern, damit da nichts Falsches steht, werde ich jetzt mit Steuerung+H, das ist "Bearbeiten""Ersetzen", aus "m_dat" ein "m_long" machen und in diesem Modul alle ersetzen und dann kann ich hier auch direkt schreiben, Achtung, da kommt ein Long-Wert" und der kommt, wenn ich nämlich jetzt "GetTickCount" aufrufe. Mit Steuerung+Leertaste wird das angeboten, wie jeder andere Funktion, die ist jetzt innerhalb dieses Moduls bekannt. Und auch hier "GetTickCount", der merkt sich jetzt eine Long-Zahl. Hier ist ein bisschen mehr zu rechnen, da muss ich diese ganze Long-Zahl wieder ein Uhrzeiten und in Sekunden und sowas umrechnen, da ist sehr viel Schreiberei, deswegen habe ich mir das jetzt aus der Zwischenablage schon geholt, aber hier ein Return zu wenig mitgenommen, das heißt, ich habe hier Variablen, das kann ich noch ein bisschen komprimieren, die sich die Millisekunden, die Sekunden, die Minuten und die Stunden und sowas merken und dann wird in diesem Fall zum Beispiel die Millisekunde berechnet als der ganzzahlige Anteil, deswegen ist das Modulo der Rest von irgendwas und dann Modulo 1000 heißt, alles, was hier durch 1000 ist und übrig bleibt. Und dann zum Schluss wird das wieder hübsch formatiert, es ist also weiterhin ein String und das ist auch eine der wesentlichen Teile einer Klasse. Ich habe jetzt die Klasse innen komplett neu aufgebaut und hoffentlich nicht beschädigt, nein, alles noch kompilierbar, das muss nach außen überhaupt niemanden interessieren. Das könnte ein anderer Programmierer machen, die Klasse hat nach außen immer noch diese 3 Prozeduren und funktioniert genauso. Ich kann die sofort wieder starten, also hier habe ich kein bisschen geändert, Sie sehen, es sind Null und eine Sekunde, ich nehme das mal wieder weg und kann jetzt hier mit F5 starten, da mache ich mal wieder auf nicht Vollbild, damit Sie unten sehen, dass es da angezeigt wird, einmal mit F5, das ging so schnell, dass davon nichts zu sehen war, aber Sie sehen jetzt hier ohne Statuszeile ist das tatsächlich auch für den noch unmessbar, mit Statuszeile ist es nicht eine, sondern eigentlich 0,797 Sekunden. Die Genauigkeit hat also erheblich zugenommen. Und da lässt sich jetzt entsprechen mit dieser Genauigkeit noch mehr Messen, das ist die Verbesserung innerhalb der Klasse, die den Vorteil hat, dass derjenige, der die Klasse aufruft, davon gar nichts wissen muss. Der weiß, es gibt eine Prozedur "Start" und "Stop" und "Dauer", die hat immer noch die gleichen Datentypen und für den wird die Klasse verbessert, also sozusagen eine neue Stoppuhr gekriegt, die ist jetzt meinetwegen Digital und nicht mehr analog.

Excel VBA für Profis: Klassen (Konzepte)

Verbessern Sie Ihren VBA-Code durch Klassenprogrammierung.

1 Std. 35 min (21 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!