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

Worksheet einfügen und löschen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Tabellen lassen sich in der Arbeitsmappe per VBA einfügen – auch an beliebigen Positionen – und bei Bedarf wieder löschen.

Transkript

Sie werden oft nicht immer mit der gesamten Worksheets-Auflistung zu tun haben, sondern mit einem einzigen Tabellenblatt, einem Worksheet. Und zwar z.B. dann, wenn Sie welchen zufügen wollen. Also, schreiben wir doch mal eine erste Prozedur, die eine neue Tabelle anlegt: Sub NeueTabelle. Und auch da mache ich es von Anfang an richtig. Ich könnte natürlich jetzt hier Worksheets.Add schreiben. Aber damit wir auch Zugriff darauf haben, Dim wksNeu As Worksheet. Und erst dann Set wksNeu gleich Worksheets.Add. Und auch da mache ich die Klammern dahinter, nur damit es klar ist, es ist eine Methode, die einen Rückgabewert hat. Die nämlich das neue Tabellenblatt zurückgibt. Das ist durchaus hilfreich, denn meistens müssen Sie direkt anschließend was machen. Z.B. könnten Sie da reinschreiben: Inhaltsverzeichnis aller anderen Tabellenblätter. Dann wollen Sie es auch sofort umbenennen und schon müssten Sie darauf zugreifen. Natürlich geht ActiveSheet, aber es ist nicht wirklich sauber. Mit Debug.Print können Sie sauber darauf zugreifen, nämlich über wksNeu. Und Punkt Name und dann schreibe ich noch ein bisschen Text dazu: "ist das neue Tabellenblatt". Dann gucken wir doch mal, ob das funktioniert. Also, es sind im Moment acht Tabellen-Blätter enthalten. Alt + F11, wir können mal hier nachgucken: von "Hier steht das Logo" bis "Ich bin neu". Und anstatt, dass nun der Benutzer ein neues Tabellenblatt aufnimmt, macht es das Programm. Also, mit F5: Zack, ist es da. Dies heißt jetzt "Tabelle21". Das ist immer reiner Zufall und steht mindestens so zufällig hier vorne. Natürlich würden Sie das ganz gerne ein bisschen steuern, das es z.B. hinten stehen soll. Nur damit es nicht so voll wird, lösche ich das hier mal, sonst wird die Leiste da unten so lang. Und achten Sie schon mal auf diese Meldung. Wenn Sie ein Tabellenblatt löschen, gibt es eine Rückmeldung, die werden wir bei Gelegenheit vermeiden wollen. So, jetzt ist es wieder ein bisschen Platz. Und ich werde diese Prozedur einfach kopieren und nenne die dann einfach NeueTabelleAnsEnde. Der Parameter versteckt sich hier drin, hinter dem Add. Finden Sie entweder ein Before oder ein After. Beide optional, aber Sie dürfen nur einen davon benutzen. Ich will das After benutzen, hinter dem Letzten. Und ich muss jetzt ein Worksheet-Objekt angeben. Das kann man, diesen Parameter, so nicht so schön ansehen. Ich muss also angeben das letzte Blatt, das hatten wir ja schon mal. Das ist von allen Worksheets dasjenige, dessen Worksheets.Count der Gesamtzahl entspricht. Also, das ist das Letzte - vielleicht wenn ich das nochmal deutlicher markiere - von allen Worksheets, dasjenige mit der höchsten Nummer. Und die ist, weil es eine Eins-basierte Auflistung ist, identisch mit der Anzahl der Blätter. Und dann schreiben wir direkt dazu. Das war die "Tabelle21", jetzt kommt die "Tabelle22" voraussichtlich. Also, mit F5, "Tabelle 22" ist das neue Arbeitsblatt am Ende. Und wir gucken mal: da ist es angekommen. Dasselbe funktioniert natürlich auch mit Before, wenn Sie das vor das Erste haben wollen. Diese Tabelle lasse ich jetzt mal drin. Und zwar deswegen, weil ich sowieso als Nächstes löschen will. Also, mit Sub TabelleLoeschen - mache ich das, was der Benutzer normalerweise unten auf diesem Register macht, rechts klickt Tabelle löschen. Da gibt es ja diese Rückfrage. Auch das korrekt, also, mit Dim wksLoeschen As Worksheet. Und Set wksLoeschen ist gleich. Und dann nehme ich jetzt wieder das Letzte, Worksheets und Worksheets.Count. Das hatten wir eben schon mal benutzt. Löschen ist immer so ein bisschen heikel, deswegen werde ich jetzt nicht ungefragt löschen, sondern wenigstens vorher noch eine Chance des Zurückschreckens lassen. Also, If MsgBox "Soll..." und jetzt möchte ich natürlich den Namen nennen. Namen immer gerne in Anführungszeichen, also ein einfaches Hochkomma. Ende des Textes, verkettet mit, wksLoeschen.Name, verkettet mit Anführungszeichen und wieder das einfache Hochkomma. Dann ist der Name des Worksheets nachher in einfachen Hochkomma da. Und dann fragen wir zu Ende "wirklich endgültig gelöscht werden?" Dann würde ich mich auf vbQuestion beschränken, das Ding ist zwar weg, aber man wollte das ja so. +vbOKCancel+vbDefaultButton2. Dieses Plus kennen Sie noch nicht möglicherweise. Das bedeutet: alle drei Konstanten werden ausgeführt, intern ist das die Summe aus Zweier-Potenzen. Die kann also nachher wieder zerlegt werden. Das muss Sie aber nicht interessieren. Sie müssen nur aus jedem Bereich einen maximalen nehmen, ein Bild, eine Schaltflächenanzahl und den Standard -Button, DefaultButton, nämlich den Zweiten. OK und Cancel, ist Cancel der Zweite. Wer also nicht ordentlich liest, löst Abbrechen aus. Klammer zu. Wenn das gleich vbOK ist, Then und End If. Es gibt noch eine zweite Erneuerung, hier auch mehr so schreibtechnischer Art. Diese Zeile ist furchtbar lang. Die werde ich jetzt hier umbrechen, hinter dem Leerzeichen kommt ein Unterstrich und ein Return. Und aus optischen Gründen rücke ich hier mit der Tab-Taste wieder ein. Wichtig ist, dass hier drei Zeichen stehen: ein Leerzeichen, ein Unterstrich, ein Return. Das sorgt dafür, dass der Editor für Ihre Augen eine neue Zeile macht, aber der Compiler weiß: die ist ja gar nicht zu Ende, die geht durch. Das können Sie fast überall machen, das hätte ich auch hier mittendrin machen können. Macht es aber nicht lesefreundlicher. Ich versuche wenigstens ganze Argumente zu erhalten. Und bitte darauf achten: ohne Leerzeichen tut es das nicht, es muss Leerzeichen-Unterstrich-Return-heißen. Und aus optischen Gründen - kleinen Abstand jetzt. Nur wenn diese Frage die MessageBox also mit OK beantwortet würde, dann fange ich wirklich an zu löschen. Also, die Worksheets-Auflistung insgesamt will von dem letzten... Das habe ich ja unter seiner Name-Eigenschaft hier zugreifbar. ...will von diesem Objekt etwas ausführen, nämlich ein Delete. Da ist die Worksheets-Auflistung leider nicht besonders entgegenkommend, sollte sie Bescheid sagen, dass sie das kennt. Ja, wir können das ja mal probieren. Es gibt ohnehin eine Rückfrage. Also, der erste Test ist dann auch auf Abbrechen zu gehen. Mit F5 die "Tabelle22" ist hier die Letzte, stimmt. DefaultValue ist Abbrechen, da oben sehe ich, dass meine Konstante nicht benutzt ist, das werde ich gleich noch verbessern. Und wenn ich auf Abbrechen gehe, passiert nichts, die "Tabelle 22" ist noch da. Das kann man auch hier noch sehen. Also, da fehlt noch eine kleine Schönheitsverbesserung, dass dort die Public-Konstante für den Application-Titel angezeigt wird. Und dieses Mal werde ich die Tabelle auch löschen. Also, F5, einmal OK und da ist jetzt diese Rückfrage, die normalen Benutzer an der Stelle irritiert, wo er doch grade beschlossen hat, dass er das löschen will. Und noch viel schlimmer, wenn er jetzt auf Abbrechen geht, ist die gar nicht gelöscht. Da ist sie noch. Das muss ich natürlich wegschalten. Das ist unabhängig davon, das heißt Application.DisplayAlerts - zeige Warnungen an. Und es gilt Application-weit, anwendungsweit. DisplayAlerts gleich False, alle Warnungen weg. Und direkt dahinter natürlich sofort wieder alles anschalten, gleich True. Jetzt ist diese Rückfrage weg und wenn ich nun mit F5 starte, gibt es nur eine Frage, die ich mit OK bestätige. Und Zack, ist das Ding auch weg. Können wir wahlweise da oben gucken, keine "Tabelle22" und hier unten auch entfernt. Also, mit einzelnen Worksheets kann man natürlich noch mehr machen, als mit der ganzen Auflistung. Nämlich eins hinzufügen, eine bestimmte Stelle hinzufügen und wieder löschen. Da würde ich dann aber schon bisschen rückfragen, ob das dann wirklich so endgültig gelöscht sein soll.

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!