Excel 2013 VBA Grundkurs

Weihnachten markieren

Testen Sie unsere 1953 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Mit einer For-Each-Schleife prüft der Code, ob der gesuchte Tag in der jeweiligen Zelle enthalten ist und markiert diesen farbig.

Transkript

Ich wollte in dieser Tabelle in der Lage sein bestimmte Tage zu markieren. Das heißt, ich werde eine Prozedur schreiben, die schiebe ich jetzt mal ein bisschen vor mir her, damit die anderen nach unten verschwinden. Also Sub MarkiereHeiligabend beispielsweise. Und möchte mit Hilfe dieser Prozedur bestimmte Datumswerte, in dem Fall "Heiligabend", markieren. Dazu brauche ich erstmal wieder ein Range: Dim rngTag As Range. Damit ich nämlich alle Tage in meinem Datumsbereich absuchen kann, ob sie dem richtigen Datum entsprechen. Also, im einfachsten Fall eine For/Each-Schleife, For Each rngTag nämlich, In. Und jetzt will ich natürlich nur noch die Datumswerte durchsuchen. Also, BereichNurDatum, ich mache mir das immer kenntlich als Function und ein Next ans Ende. Damit durchsuche ich jede Zelle, die in diesem Datumsbereich liegt. Und da prüfe ich jetzt erstmal, ob es sich überhaupt um ein Datum handelt. Also If IsDate. Das mag jetzt übertrieben sein, weil wir den Bereich also eingegrenzt haben. Aber früher oder später schreibt da irgendjemand versehentlich was rein, statt "Datum" - dann irgendwie wirklich "Weihnachten" oder so. Und deswegen prüfe ich das ganz gerne vorher. Das kostet wenig Mühe und spart Ihnen viel Ärger. Die IsDate-Funktion. Sie haben so was ähnliches schon mal als IsNumeric kennengelernt. Ich zeige Ihnen die mal eben, diese Is-Funktion, da gibt es einige hintereinander, die sehr praktisch sind. Und IsDate prüft eben, ob es ein Datum ist. IsArray, ob es ein Array ist. IsEmpty gilt nur für Variant-Datentypen, ob es noch leer ist, ob ein Fehler aufgetreten ist, ob es fehlt. Das haben wir auch schon mal benutzt für optionale Argumente. IsNull, vor allem, wenn Sie aus Datenbanken Leerwerte kriegen. Und IsNumeric, ob es eine Zahl ist. Also IsDate. Und dem übergebe ich einfach die Zelle, nämlich rngTag.Value, den Inhalt dieser Zelle. Wenn das der Fall ist, wenn das ein Datum enthält, dann reagiert das mit True. Deswegen muss ich hier nicht mit irgendwas vergleichen. End If auch, nur dann tue ich überhaupt was. Und dann gucke ich, ob dieses Datum zufällig mit dem identisch ist, was ich brauche. Also If ConvertToDate. Das ist auch eine Sicherheitsmaßnahme, C.Date. Was immer da drin steht, will ich umwandeln und mit meinem Datum vergleichen. Also mit 24/12/2014. Achten Sie darauf, amerikanische Reihenfolge. Then. Dann habe ich es gefunden. Und wenn ich es gefunden habe, dann mache ich erstens diese Zelle bunt. Also, rngTag.Interior, der Innenbereich kriegt eine Color. Und die nehmen wir mal einfach vbGreen. vbGreen ist eine Konstante. Da finden Sie einige. Sie können die Farben einfach in Englisch raten: vbRed, vbGreen, vbBlack, vbBlue. Nur Gray heißt GrayText, aber das würden Sie ja auch finden. Und wenn Sie den Tag gefunden haben, kann ich Ihnen fest versprechen, dass dieser Tag in diesem Jahr nur einmal vorkommt. Wir müssen also nicht weiter suchen. Stellen Sie sich vor, Sie wollen "Neujahr" markieren. Dann haben Sie sofort einen Treffer und 364 überflüssige Tests in den folgenden Zellen. Also, sofort raus aus der Schleife, Exit For. Ich wollte natürlich nicht GrayText, sondern Green auswählen. So. Das ist soweit in Ordnung. Allerdings erspare ich mir Konstanten, die irgendwie hier direkt im Text sind. Die werden wir noch häufiger brauchen. Die kommen direkt oben als Modul-öffentliche Konstanten hin. Dann sind sie auch sprechender. "Weihnachten" geht ja vielleicht noch, aber Sie werden welche sehen, die nicht ganz so selbsterklärend sind. Also, m_cdat. Ich bin eine Modul-öffentliche Konstante als Datum. Und die nennen wir "Heiligabend2014". Und da schreibe ich das stattdessen rein. Also, gleich dieser Wert. Ich mache hier wieder dies Kommentarzeichen, damit Sie den Unterstrich sehen. Und das, was ich da oben vereinbart habe, kann ich jetzt hier mit Strg + Leertaste wieder einfügen. Technisch hat sich nichts geändert, aber das steht jetzt sprechend, ein Datum drin. Und das gilt z.B. für Ostern, wie Sie nachher sehen werden. Ostern ist ein Datum, was man nicht auf Anhieb erkennt. Da ist sowas erläuterndes schon hilfreich. Dann gucken wir doch mal, ob es funktioniert. Erst Speichern, ein Kompilier-Check. Das sieht gut aus. Und wenn ich jetzt F5 drücke, wir gucken vielleicht vorher einmal mit Alt + F11, "Weihnachten" nichts markiert. Und dann mit F5 einmal laufen lassen. Und jetzt sehen Sie hier grüne Markierung für Weihnachten. Also, hat alles geklappt. Aber es ist noch nicht wirklich perfekt. Für diesen Anlass reicht das erstmal. Ich kann ein festes Datum nehmen, irgendwo suchen in diesem Bereich und das wird dann grün markiert.

Excel 2013 VBA Grundkurs

Holen Sie aus Excel 2013 mit der integrierten Programmiersprache VBA auch das letzte Quäntchen an Funktion heraus und lassen Sie sich dazu zeigen, was alles möglich ist.

6 Std. 18 min (63 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!