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 2016 VBA Grundkurs

Inhaltsverzeichnis löschen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Bevor Sie eine neue Tabelle mit einem festen Namen anlegen, sollten Sie prüfen, ob es vielleicht schon eine gleichnamige Tabelle gibt – und diese gegebenenfalls löschen.

Transkript

Sie haben jetzt eine ganze Menge Befehle einzeln gesehen. Jeweils sozusagen, aus dem Zusammenhang gerissen. Wirklich gute Programmierung zeichnet sich aber dadurch aus, dass Sie an der richtigen Stelle die richtige Methode und/oder den richtigen Befehl benutzen. Nicht einfach nur hintereinander angeordnete Befehle, die irgendwie richtig sind, sondern die auch clever eingesetzt sind. Und das möchte ich Ihnen jetzt in einem kleineren Beispiel zeigen, was da die Unterschiede ausmacht. Ein Teil des Beispiels haben Sie schon gesehen. Ich möchte nämlich für diese Datei ein Inhaltsverzeichnis der Tabellen anlegen. Dazu sollte ich - das kam bisher noch nicht vor - erstmal dafür sorgen, dass es kein gleichnamiges Blatt gibt, keine Tabelle, die "Inhaltsverzeichnis" heißt. Also muss ich eine Prozedur erfinden, die heißt "Sub InhaltsverzeichnisLoeschen" Egal ob vorher eins da war, es muss weg. Dazu brauche ich eine wks- Worksheet-Variable und die heißt dann immer so lieblos "dim wksDieses as worksheet" Da packe ich gleich die jeweils betrachteten Worksheets rein. Und jetzt kann ich über alle Worksheets untersuchen, mit einer "for each"-Schleife. "for each" Einzelobjekt, "wksDieses" in Auflistung, also "ActiveWorkbook.Worksheets". Und das "next" schreibe ich schon mal, damit ich es nicht vergesse. Damit habe ich in diesem Durchlauf automatisch jedes Tabellenblatt einmal in der Hand. Und jetzt kann ich prüfen: Wenn dessen Name, also "wksDieses.Name" gleich "Inhaltsverzeichnis" "Then" kann ich es löschen. Ich schreibe da nur erstmal "Achtung" hin. denn da ist noch mehr zu berücksichtigen. Aber das bedeutet, wenn ich jetzt in diese Zeile komme, wo jetzt der grüne Code "Achtung" steht, besser gesagt der grüne Kommentar, - das wird gerade nicht ausgeführt - dann habe ich ein Inhaltsverzeichnis gefunden. Und hier sind jetzt schon die ersten Verbesserungsmöglichkeiten. Zum Beispiel ist es technisch möglich, dass ich ein Inhaltsverzeichnis anlege, aber klein schreibe. Aus Exceltabellen-Sicht darf das nicht ein gleichzeitig großgeschriebenes Inhaltsverzeichnis haben. Dann gelten die als gleichnamig. Aber hier prüfe ich leider einen kleingeschriebenen Namen gegen einen großgeschriebenen. Und aus exakter Code-Sicht sind die nicht gleich. Ich muss also schon mal dafür sorgen, dass beide zum Beispiel in Kleinbuchstaben umgewandelt werden. Dazu gibt es eine Funktion LCase Lower Case - Kleinbuchstaben. Der gebe ich ein einziges Argument nämlich einen String. Und die liefert mir diesen String dann komplett in Kleinbuchstaben zurück. Soweit super, aber vergessen Sie nicht die andere Seite. Wenn Sie den jetzt auch noch mutwillig in Kleinbuchstaben umwandeln, dann scheitert das garantiert. Das müsste ich hier also auch machen. Ich werde es deswegen nicht machen, jedenfalls nicht im Text, weil ich diesen Text noch öfter brauche. Also, mit "LCase" werde ich auch diese Zeichenkette in Kleinbuchstaben umwandeln. Und Sie fragen sich jetzt zurecht: Was soll das? Ich hätte doch ein kleines "i" machen können. Ja, aber diese Zeichenkette würde woanders hinwandern. Ich werde häufiger diese Bezeichnung brauchen, spätestens beim Neu-Anlegen, also machen wir doch einfach mal eine Modul-öffentliche Konstante. Also, "const m_c" ist meine Kennzeichnung Modul-öffentliche Konstante vom Datentyp String und - ich nenne die einfach mal "IV" für "Inhaltsverzeichnis" - und die muss natürlich gleich einen Wert kriegen. Also da kann ich schon mal ausschneiden, und hier gleich, STRG + "V", wieder einfügen. Da kommt jetzt wieder ein Kommentarzeichen drunter, damit Sie den Strich sehen. Und diese Konstante wird jetzt hier eingesetzt. Da ich die später auch benutzen werde, um das neue Inhaltsverzeichnis anzulegen, was ein großes "I" bekommen soll, kann ich da nicht einfach den Buschstaben ändern. Ich nehme also hier die korrekt geschriebene Variante und wandle die in Lower Case um. Sie hätten auch beide auf Upper Case setzen können, alles in Großbuchstaben, ist egal, Hauptsache, rechts wie links. Und wenn ich eins gefunden habe, dann kann ich es löschen. Also, ich würde jetzt an dieser Stelle sagen, das was ich hier in der Hand habe, "wksDieses" ist offensichtlich das Inhaltsverzeichnis, und das kann ich mit "Delete" direkt rausschmeißen. Und auch da ist wieder Potential drin, denn wenn Sie es gerade gelöscht haben, kann ich Ihnen garantieren, es kann nur Eines geben. Excel verhindert gleichnamige Tabellen. Und das bedeutet, sobald Sie es gelöscht haben, ist es sowieso schon weg. Mehr können da nicht kommen, also sollten Sie nicht, wenn das zum Beispiel das Erste war, - da werde ich gelegentlich dafür sorgen, dass es immer als Erstes eingefügt wird - dann muss ich mir nicht die anderen neun Tabellen von den zehn insgesamt auch noch angucken, denn da kann keins mehr kommen. Also verlasse ich die Schleife mittendrin, das heißt auch bei einer "For Each"-Schleife trotzdem nur "Exit For". Gibt es übrigens auch für "Do Loop"-Schleifen, heißt dann "Exit Do". Also mit "Exit For" springe ich an dieser Stelle hinter das "Next". Falls Sie schon mal mit "Goto"-Befehlen zu tun gehabt haben, da müssen Sie immer ein sogenanntes Label angeben, wo er hinspringt. Das brauchen Sie hier nicht. "Exit For" springt immer hinter das "Next" von dieser Schleife. Wenn die geschachtelt sind, immer hinter das "Next" meiner eigenen Schleife sozusagen. Und damit habe ich sozusagen die Aufgabe gelöst. Wenn keines der Tabellenblätter "Inhaltsverzeichnis" heißt, ist auch alles in Ordnung. Ich kann jetzt einmal eben gucken, - das kann man hier oben auch sehr schön machen - in den Klammern müsste "Inhaltsverzeichnis" stehen. Es existiert keins. Also mit F5 durchlaufen lassen, Davon sehen Sie gar nichts, das war so schnell, das hat nichts gefunden. Aber jetzt lege ich mal eins an. Also hier kommt ein neues, das heißt "Inhaltsverzeichnis". Und wenn ich jetzt, - das kann man auch hier oben sehen, da ist es - wenn ich jetzt F5 durchlaufen lasse, dann ist es weg. Und ich kann gerne auch drüben nochmal zeigen, es ist hier genauso weg. Das ging extrem schnell, und es gibt auch nicht wirklich was dran zu meckern. Aber ich sage ganz ehrlich, das ist langsam. Tendenziell ist das langsam. "MitSchleife" schreibe ich schon mal dran. Es gibt nämlich noch einen komplett anderen Ansatz. Das werde ich jetzt als "Sub InhaltsverzeichnisLoeschen Egal" mal als Zusatz. Das bedeutet, vereinfacht gesagt, ich lösche das Inhaltsverzeichnis, und wenn es einen Fehler gibt, möchte ich den gar nicht wissen. Also erstmal, ich lösche das Inhaltsverzeichnis, also in "ActiveWorkbook.Worksheets". Dasjenige, was diesen Namen, - da brauche ich das nämlich noch mal - trägt, das wird mit "Delete" gelöscht. Auch das haben wir schon mal einzeln benutzt. Und wenn ich das jetzt ohne ein Inhaltsverzeichnis zu besitzen, einfach laufen lasse mit F5, dann gibt es sofort einen Laufzeitfehler. der mich darauf hinweist, - etwas sprachlich unglücklich, nicht der Index ist außerhalb des gültigen Bereichs, sondern diesen Namen kann er nicht finden - der mir also sagt, da gib es einen Fehler. Und ich sage dann: Ja, ist doch super. Ist mir eigentlich auch egal, Hauptsache es ist weg. Und deswegen schalte ich jetzt vorher die Fehlerbehandlung aus. Die Fehlerbehandlung in VBA funktioniert so, dass Sie vorher sagen müssen: Jetzt werden Fehler ignoriert. Das liest sich als "OnError Resume Next", "Bei Fehler Weiter Nächste" hieß das mal in wunderschönem Excel VBA-Deutsch. Das gab's tatsächlich mal in einer Version. Heißt also ab dieser Zeile: Wenn ein Fehler auftritt, sage nicht Bescheid. Mache einfach weiter. Wenn ich jetzt mit F5 starte, keine Fehlermeldung, obwohl es die nicht gibt. Dann müssen wir natürlich noch den anderen Fall testen. Was ist denn, wenn es wirklich ein Inhaltsverzeichnis gibt? Also hier "Inhaltsverzeichnis" und das ist hier oben auch zu sehen. Und jetzt drücke ich F5 und dann ist es da oben auch verschwunden. Sie haben Recht: Der Zeitunterschied zwischen diesen beiden ist möglicherweise so gering, dass ich ihn kaum messen könnte. Es ist mindestens kürzer zu schreiben, weniger Zeilen. Aber es kann ja mal sein, dass Sie sehr viel mehr untersuchen. Ich sage mal nicht nur Worksheets, das sind maximal 255, sondern, dass Sie beispielsweise Daten untersuchen. Milliarden von Zellen, so viele können ja in Excel sein, die Sie auf irgendwas untersuchen wollen und dann löschen, Da würde ich dann immer darüüber nachdenken, ob es nicht so einen Trick gibt. Manchmal gibt es auch so Möglichkeiten mit SpecialCells, wie Sie schon mal gesehen hatten. Ob Sie es nicht, ohne lange in einer Schleife durchlaufen zu müssen, direkt zugreifen können. und das ist hier die bessere Variante sozusagen, jedenfalls die kürzere. Damit sind wir mit dem ersten Teil fertig. Das Inhaltsverzeichnis, falls es denn eins gab, ist sicher weg.

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!