Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Excel 2016 VBA Grundkurs

Tag schneller markieren

Testen Sie unsere 2019 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Da die Datumswerte hier wie in einem zweidimensionalen Array organisiert sind, können Sie statt in einer Schleife direkt die passende Zelle anspringen.

Transkript

Wenn Sie diese Prozedur hier zum Markieren eines beliebigen Tages genau angeschaut haben, und ein anderes Video schon gesehen hatten, in dem ich das bereits mal erwähnt habe, dann sehen Sie, dass da Beschleunigungspotential drin ist. Stellen Sie sich vor, Sie wollen Neujahr umfärben. Dann geht eine Schleife über alle Tage, findet den ersten Tag sofort als Treffer, macht ihn bunt, und guckt sich die anderen 364 Tage auch noch an. Obwohl ich Ihnen garantieren kann, dass dieser eine Tag dort nicht nochmal vorkommt. Also, die erste Möglichkeit zur Beschleunigung - nachdem alles funktioniert, sollte man immer über Beschleunigung nachdenken - besteht darin, dass Sie hier einen "Exit for" machen. Dann wird die "For Each"-Schleife verlassen und hinter "Next" weitergemacht und da ist es fertig. Sie werden das hier kaum messen können, aber trotzdem sollte man immer zusehen, möglichst effektiv zu arbeiten. Das bedeutet trotzdem, wenn Sie Sylvester untersuchen, dann guckt sich der Code 364 Tage an, bis er auf Sylvester stößt. Und wenn Sie sich jetzt die Art der Organisation hier angucken, dann werden Sie feststellen, dass an dieser Stelle, die Daten so organisiert sind, wie in einem Array. Damit das gleich funktioniert, müssen wir erstmal ein bisschen aufräumen. Also mit Start das Muster auf "Keine Füllung" stellen, denn ich habe ja alle Tage schon mal benutzt. Und wenn ich jetzt einen bestimmten Tag suche, sagen wir mal Heilig Abend, dann kann ich Ihnen versprechen, Heilig Abend ist im zwölften Monat am 24ten Tag. Das ist ein zweidimensionales Array. Ich kann also exakt sagen wo ich hin muss. Ich muss hier elf weiter. Ich bin im Ersten, will in den Zwölften, also zwölf minus eins Spalten weiter. Und ich muss von hier aus, 24 minus eins Zellen abwärts. Zeilen runter. Ohne das ich mir irgendeine andere Zelle angucken muss, kann ich sagen, einfach weil das Datum so organisiert ist, wie viele Spalten weiter und wie viele Zeilen runter ich muss. Deswegen möchte ich in einer Alternative zeigen, zu diesem "MarkiereTag"... Da brauchen wir eigenlich gar nichts zu kopieren, außer die sogenannte Signatur, also die erste Zeile. Und der muss natürlich einen anderen Namen kriegen. Sagen wir mal einfach "Index". Ich könnte ihn auch "Schneller" nennen, denn das ist er bestimmt. Und dort brauche ich vor allem zwei Variablen, um die Zeilen und die Spalten angeben zu können. Also die eine heißt "intTag as Integer". Könnte auch Byte sein, das ist jetzt hoch dimensioniert, aber lieber zu viel als zu wenig. Und dasselbe für den Monat, "as Integer". Der Monat gibt die Spaltenbewegung an, der Tag die Zeilenbewegung. Und die werde ich jetzt einfach ausrechnen. "intTag" ist nämlich nichts anderes als "day". Die Funktion "day" ermittelt den Tag aus einem Datum, nämlich von diesem. Und "intMonat" ist dasselbe für "month". Auch von "datDieses", und damit weiß ich schon, um wieviel ich mich bewegen muss. Genauer gesagt, wenn Sie dort jetzt 24 und 12 rauskriegen, müssen Sie sich um 23 und um 11 bewegen. Wir müssen also gleich einen abziehen, weil wir ja schon in der eins stehen, und nicht in einer nicht-existierenden null. Und jetzt weiß ich schon, dass ich diese Position, die ich da ermittle, zweimal brauchen werde. Also, mit "With" gebe ich jetzt an, wo ich hin möchte. Nämlich in dieser Arbeitsmappe gibt es eine Names-Auflistung. - Achtung: Plural! - Dort habe ich eine Zelle namens "Neujahr" benannt. Es wird aber erst eine Zelle, wenn ich auf "RefersToRange" gehe. Diese Konstruktion gibt die Zelle an, in der sich das Neujahrsdatum befindet., Egal wo sie ist. Das sehe ich hier gar nicht wirklich, ich weiß es nur. Und von dort aus gehe ich mit "Offset" weiter, und zwar um "Row", also Zeilen, um "intTag-1". Also nicht 24 weiter, sondern nur 23 weiter. Komma, und jetzt die Columns, also die Spalten, das ist die Monatsbewegung. Auch da "-1", weil ich ja schon in der eins selber stehe. Und jetzt mit "End With" habe ich das nur abgeschlossen. damit ich dazwischen auf "Interior" zurückgreifen kann und "Color" - machen wir mal "vbBlue" - und hier erneut auf "Interior". Und spätestens da fällt mir auf, das können wir kürzen. Also auch "Interior" kann ich noch ausklammern. Und das heißt, hier habe ich direkt "Pattern". Und dann nehmen wir mal ein anderes; "xlPatternDown", die sind einfach andersrum geneigt. Sie sehen, es ist nicht nur kürzer. Das könnte man noch deutlich verkürzen, wenn man das hier in einem ausrechnet, Aber vor allem es ist schneller. Denn ich muss nicht durch alle mit einer Schleife durch, selbst wenn ich die abbreche, Statistisch gesehen, werden Sie immer die Hälfte der Tage durchsuchen müssen. Hier bin ich sicher, da muss ich gar nichts durchsuchen. Ich weiß genau, wo ich hinspringe, nämlich um diese Position verschoben. Gucken wir mal, dass es auch klappt, also der Tag der Arbeit mit F5 wird jetzt blau sein. Das ist er deswegen nicht, weil ich hier nicht die mit dem Index aufgerufen habe, Ich werde das mal einfach so machen, dass ich diese Bezeichnung hier wieder rausnehme, und den dann kommentiere. Sicherheitshalber DebuggenKompilieren. So. Und jetzt können wir es nämlich nochmal prüfen. Ich kann das Grüne hier drin stehen lassen, das wird ersetzt, aber sicherheitshalber nehme ich es mal ganz raus, damit da keine Reste drin sind. Hier diese Funktion, nimmt übrigens auch einen Pattern direkt raus. Das ist automatisch anders, als Sie das in VBA sehen, wo das ja zwei Befehle sind. Also, zweiter Anlauf, Tag der Arbeit, jetzt aber in blau. Ist ein bisschen sehr dunkel, vielleicht nicht so gelungen. Also machen wir ihn "Green" wieder. Sie sehen ja, dass es die neue Funktion ist. So, nochmal mit F5 laufen lassen, aber natürlich diese hier. Wenn Sie eine Prozedur, wie ich es gerade gemacht habe, mit Parametern anklicken, dann fragt dieser Dialog hier nämlich, welches es denn sonst sein soll. Also Sie müssen so eine Prozedur anklicken, mit F5 ausführen, und da endlich haben wir es auch in Grün. Und die anderen genauso. Ich gebe zu, dass Sie bei diesen wenigen Feldern die zu durchsuchen sind, - 365 Felder ist nicht wirklich viel, ich mache die mal eben alle bunt - da nicht viel Zeit einsparen, aber es soll doch wenigstens schon mal eine Anregung sein, wo sich was beschleunigen lässt, wenn Sie mal mit vielen Daten zu tun haben. Da können Sie bei Excel ja in die Milliarden Zellen kommen. Also, wenn die so organisiert sind, dass Sie genau wissen, wo Sie hinspringen müssen, dann würde ich das auch empfehlen. Andernfalls müssen Sie wirklich in einer Schleife alles durchlaufen.

Excel 2016 VBA Grundkurs

Lassen Sie sich systematisch in die Excel-Programmierung mit Visual Basic for Applications (VBA) einführen.

7 Std. 25 min (66 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Exklusiv für Abo-Kunden
Erscheinungsdatum:30.08.2016

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!