Excel 2013 VBA Grundkurs

Inhaltsverzeichnis anlegen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Ist in der Arbeitsmappe bereits die gesuchte Tabelle vorhanden, fragen Sie den Benutzer, ob sie gelöscht oder umbenannt werden soll und erledigen das per VBA automatisch.

Transkript

Mit dem ersten Teil des Makros haben wir herausbekommen, ob es in dieser Datei überhaupt ein Inhaltsverzeichnis gibt. Und das kann ich nämlich jetzt untersuchen: If booHatInhalt=True Then. Und ich schreibe es schon mal komplett hin: End If. Wobei ich es so komplett nie schreibe. Dies ist eine Boolean-Variable, die kann nur True oder False, wahr oder falsch sein. Und True=True ergibt True. False=True ergibt False. Heißt auf Deutsch: ein Vergleich mit True ist überflüssig. Sie können das auch immer so schreiben. Da liest es sich sogar ein bisschen besser. Ich bin sonst nicht für überflüssige Verkürzungen, aber hier kann man direkt, wenn man die Variable vernünftig benennt, lesen: If hat Inhalt, Then. Wenn da also ein Inhaltsverzeichnis drinsteht, dann muss ich reagieren. Ja, dann habe ich zwei Möglichkeiten: entweder ich lösche es, oder ich benenne es um. Hauptsache, es ist hinterher nicht mehr das Inhaltsverzeichnis mit diesem Namen. Am besten frage ich mal meinen Benutzer. Also, If MsgBox "Soll das Inhaltsverzeichnis gelöscht werden?" Und das ist eine Frage, eine vbQuestion mit der Auswahl vbYesNo und vorsichtshalber vbDefaultButton2. Das heißt, das No ist vorausgewählt. Und damit der Benutzer auch weiß, wer ihn das fragt, kommt hier mein p_cstrAppTitel-Konstante dahinter. Und wenn das gleich vbYes ist, dann darf ich es löschen. Sofern sollte ich den anderen Fall auch berücksichtigen - End If - was ich mache, wenn ich es nicht löschen darf. Sie merken schon, das wird hier sehr lang. Da mache ich mal hier eine Unterteilung: Leerzeichen ist da, Unterstrich, Return und eingerückt. Dann liest es sich ein bisschen besser. Von solchen eingerückten Zeilen halte ich immer auch ein bisschen extra Abstand. Jetzt könnte ich hingehen, das hat mir der Benutzer gerade erlaubt. ActiveWorkbook.Worksheets und zwar das: da haben wir die Konstante wieder mit dieser Bezeichnung. Das darf ich Delete, löschen. Aber Sie erinnern sich, das Löschen an sich löst immer so eine Fehlermeldung aus, die muss ich unterdrücken. Also, mit Application.DisplayAlerts auf False. Und anschließend mit Application.DisplayAlerts wieder auf True. Das Löschen ist also jetzt erledigt sozusagen. Im anderen Fall möchte ich es umbenennen. Da können wir das schon mal in die Zwischenablage kopieren. Das brauchen wir gleich zweimal und genau genommen, bevor ich das zweimal brauche, mache ich lieber ein With. With diesem Objekt, wenn man das mal so sagen darf. Also, dieses frisch gefundene Worksheet von dem Inhalt, was ja offensichtlich da ist, was ich aber nicht löschen darf, wird dann zwangsweise umbenannt. Das heißt dessen Name ist gleich der bisherige Name, verkettet mit. Und da können wir am einfachsten Fall die Zeit nehmen. Also, mit eigentlich Time, das würde die Uhrzeit liefern. Allerdings mit Doppelpunkt und allem Schnick und Schnack. Deswegen werde ich die Format-Funktion benutzen, die in der Lage ist diese Zeit nach eigenen Wünschen umzuformatieren. Nämlich mit einem Unterstrich beginnend, zweistellige Stunde (Hour), zweistellige Minuten. Ja, ich sehe es, dass es Nordpool-N ist, trotzdem werden die Minuten mit einem N gekennzeichnet. Ein kleines m, wie Martha, sind nämlich Monate. Und dann zweistellige Sekunden, Gänsefüßchen zu, Format-Klammer auch zu. Das bedeutet, der bisherige Inhaltsverzeichnisname wird verlängert um eine Uhrzeit. Danach ist auf jeden Fall aufgeräumt und ich kann jetzt auch hier das neue Inhaltsverzeichnis direkt anlegen. Also, auch hier wieder With ActiveWorkbook.Worksheets, ein Add. Also, Klammer auf, jetzt hätte ich gerne das Erste von allen. Also, ich muss ein Worksheet-Objekt übergeben, ActiveWorkbook.Worksheets, davon das Erste und beide Klammern zu. Aber natürlich ein End With. Sie mögen sich gerade über diese Schreibweise gewundert haben. Normalerweise, steht mit diesem With irgendein Objekt, was es schon gibt. Hier z.B. das vorhandene Worksheets mit dem Inhaltsverzeichnis drin. Das ist hier anders: hier rufe ich nicht ein vorhandenes Objekt auf, sondern eins, was bei dieser Gelegenheit erzeugt wird. Und könnte das erst einer Variablen, z.B. Set wksDieses zuweisen und dann With wksDieses. Tatsächlich können Sie auch das, was hier entsteht, dieses Objekt, direkt in die With-Struktur einhängen. Und dann geht es relativ schnell: .Name soll ja cstrInhalt werden, nämlich das Wort "Inhaltsverzeichnis". Das sollten wir jetzt einmal testen, mit F5 - da ist was durchgelaufen. Gucken wir mal, was passiert ist. In dieser Datei, die war bis auf "Tabelle1" leer - ist das neue Worksheet "Inhaltsverzeichnis" entstanden. Alles super, war keine Rückfrage nötig. Jetzt allerdings, beim zweiten Start gibt es das schon. Deswegen werde ich jetzt gefragt. Wenn es gelöscht werden soll - Nö - dann wird es umbenannt. Also, nachgucken, da ist es umbenannt worden. Wenn Sie sich gerade wundern, warum es hier trotzdem existiert? Das Original ist umbenannt worden, da ist diese Zeit kodiert drin. Und dann ist natürlich ein neues angelegt worden. Denn unser letzter Schritt hier sagt: nachdem es entweder gelöscht oder umbenannt wurde, gibt es jetzt ein neues, frisch angelegt, mit diesem Titel. Funktioniert also alles wunderbar. Sie können sicher sein, dass anschließend garantiert nur ein Worksheet vorhanden ist, welches "Inhaltsverzeichnis" heißt.

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!