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 testen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Zwei Berechnungen, mit und ohne Anzeige in der Statusleiste, sollen von zwei parallelen Stoppuhren durchgeführt werden.

Transkript

Jetzt möchte ich natürlich diese Klasse mit der Stoppuhr auch mehrfach aufrufen und vor allem möchte ich die Zeit anders verbrauchen als jetzt auf eine Messagebox zu warten. Es gibt viele Anlässe in Excel, wo viel zu berechnen ist und möglicherweise auch wo, was parallel zu messen, wenn die unbedingt zu berechnen ist, aber ich will sie möglichst einfach machen, deswegen brauche ich zuerst mal eine Aufgabe. Also "sub", das schreibe ich mal oberhalb, dann ist es leichter zu lesen, das schiebe ich also vor mir her, "Sub TesteBerechnungen" nenne ich das schon mal, ich werde erstmal nur die eigentliche Berechnung machen, die ist ziemlich banal, ich habe das VBA-Fenster schon verkürzt, das ist nicht mehr im Vollbild, ich werde die Statuszeile von Excel hier unten sehen und werde dort einen Text anzeigen. Also hier brauche ich erstmal eine Variable, um zählen zu können, "Dim lngZaehler As Long" und eine Variable, in der ich ein Ergebnis ablege, was aber eigentlich nicht interessant ist, die wird ziemlich groß die Zahl, deswegen werde ich an der Stelle eine Double-Zahl nehmen. Und außerdem brauche ich noch eine Konstante, die kann nicht zur Not ändern, das hat was mit der Rechengeschwindigkeit zu tun, im Moment stelle ich mir die mal auf Tausend, also10 hoch 3, der Vorteil dieser Schreibweise, dieses Caret-Zeichen, wie das offiziell heißt, dieses Dach, das kommt immer erst, wenn Sie neben der 1 das Zeichen gedrückt haben und danach die Leertaste berühren, diese Schreibweise hat den Vorteil, wenn Sie mal ganz große Zahlen haben wollen, müssen Sie einfach nur den Exponenten ändern. Das dauert Stunden, das würde ich mir jetzt nicht antun, ich mache nichts anderes als eine Schleife für den Zähler, der beginnt bei 1 und geht bis zu dieser Konstanten, nächst schreibe ich vorsichtshalber schon mal hin und dann errechnet er das Quadrat dieser Zahl, "dblX= lngZaehler ^ 2" und schreibt den Wert in die Statuszeile, deswegen würde ich die sehen. Also "Application.StatusBar= dblX". Ich mache das erstmal relativ kurz und schnell, nur damit Sie müssen schon mal sehen, dass es funktioniert, "Debuggen"Kompilieren", alles in Ordnung, das wird so schnell gehen, dass Sie davon nicht viel sehen, aber die letzte Zahl sehen Sie noch. Also einmal mit F5, dann sehen Sie hier unten steht dann die 10.000. Hat also geklappt, das ist das schnell vorbeigerauscht und das will ich messen. Ich brauche also eine Variable, die nenne ich mal einfach "clsMit", nämlich mit Statuszeile kann ich schon mal sagen, "As clsStoppuhr" und da ist eine Leerzeile zu viel, da kann ich schon mal die andere "Ohne As clsStoppuhr" als zweite Variante anlegen. Die erste Messung, die ich jetzt hier mache, benutzt dieses Stückchen Code, also "Set clsOhne = New" und dann kommt "clsStoppuhr" und bevor es losgeht, muss ich natürlich "clsOhne.Start" auslösen und danach, wenn ich fertig bin "clsOhne.Stopp" und das reicht erstmal. Das ist die Variante ohne Statuszeile habe ich versprochen, das werde ich gleich raus nehmen, Sie haben recht, da steht die Statuszeile natürlich noch drin und ich werde sich einmal kommentieren und muss also hier die zweite Stoppuhr starten, die heißt, "Mit", also das "Ohne" muss rausfliegen, da muss man aufpassen, dass man keinen vergisst, Steuerung+ Leertaste, dann wird die Variable der Name erkannt, jetzt bin ich hoffentlich fertig. Zu diesem Zeitpunkt, da ich schiebe das mal ein bisschen nach unten, damit Sie das besser sehen, möglichst gleichzeitig alles, zu diesem Zeitpunkt habe ich zwei Stoppuhren: Die Erste wird hier gestartet und hier gestoppt, die Zweite wird hier gestartet und hier gestoppt. Von keiner der beiden Stoppuhren weiß ich bisher, da kann ich ein bisschen Platz sparen, wie die Ergebnisse sind, die kann ich mir Wochen und Tage später anzeigen lassen, also jetzt nämlich, das ist ja eine Instanz, eine Klasse, die weiterläuft. Ich kann jetzt einfach sagen "Ohne" verkettet "Mit" und jetzt erst kommt die "clsOhne.Dauer" und dann direkt hinterher "debug.Print "Mit", ich versuch mal mit dem Leerzeichen das ein bisschen auszugleichen, das sieht gleich einfach nur schöner aus, "clsMit.Dauer". Ich muss nicht sofort die Dauer abfragen, das weiß diese Instanz noch. Wenn es jetzt alles gut geklappt hat, dann kann ich hier unten das mal mit "Debuggen""Kompilieren" prüfen und dann mit F5 durchlaufen lassen. Sie können hier parallel gucken, das wird sehr schnell gehen, ich wollte das auch nicht hoch 2, sondern hoch 3, damit sie ein bisschen länger dauert, mit F5 sehen Sie, da kurz die Zahlen durchrauschen und Sie sehen jetzt, das ist gemessen. Und zwar, da sagen wir ein kleiner Unterschied, aber es gibt einen Unterschied. Ich setze diese Zahl mal ein bisschen höher, da muss man vorsichtig sein, weil das erheblich zunimmt, also mit F5 einmal durchlaufen lassen, dann sehen wir vielleicht den Unterschied deutlicher und Sie merken schon, es dauert erheblich länger, obwohl ich nur in Anführungszeichen die 10-facher Berechnung gemacht habe. Jetzt sind Sie natürlich genau falschrum, das sehe ich jetzt an den Zeiten, aber die können wir uns trotzdem merken, ich habe hier oben "Application" mit "StatusBar" gemacht und da unten ohne, das muss natürlich anders rum sein, deswegen sollte man sprechende Variablen wählen und sich dann wundern, was rauskommt. Was nämlich rauskommt, ist, dass die Statuszeile in Excel unglaubliche Zeit verbraucht. Und was übrigens auch dabei rauskommt, ist, dass die Statuszeile ihren letzten Wert, das war bisher praktisch behält, das will ich aber nicht auf "Dauer" haben, also würde ich jetzt noch einmal "Application. StatusBar" und dann diese merkwürdige Zuweisung "=false" schreiben. Das macht nichts anders als die Statuszeile wieder freizugeben, ich reduziere das mal wieder ein klein bisschen "^3" reicht, dann geht es schneller und wenn wir da aufgeräumt haben, dann noch einen letzten Durchlauf mit F5 und die sehen jetzt, erstens sind die Zeiten passend ohne Statuszeile fix mit Statuszeile langsam und die Statuszeile selber ist wieder, wieder zu schön, das heißt, im Betriebsmodus nämlich freigegeben. Ich habe jetzt also hier zwei Stoppuhren benutzt und brauche im Moment zwei Variablen dafür. Das kann man auch in einem Array machen zum Beispiel, wenn man nicht weiß, wie viele oder sehr viele Stoppuhren braucht, beides ist damit hier möglich, aber das ist jetzt hier erstmal einfacher und diese Technik bietet mir die Möglichkeit zwei Stoppuhren, die nicht wirklich parallel laufen, im Moment das ist unsere Programmieraufwand, aber zumindest unabhängig voneinander benutzt werden können.

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!