Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1856to1860
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makros-Kopieren & Löschen von Blättern

Makros-Kopieren & Löschen von Blättern
30.11.2021 14:56:30
Blättern
Hallo zusammen,
ich habe eine Arbeitsmappe, in der ich über Makros Tabellenblätter einfügen und löschen möchte.
Einfügen-Makro:
Beim Einfügen soll ein bereits bestehendes Tabellenblatt namens "Vorlage" kopiert werden. Hierbei soll über eine InputBox der Name des neuen Tabellenblattes eingetragen werden können.
Diesen Schritt habe ich mit untenstehender Eingabe hinbekommen. Da ich eigentlich keine Ahnung von VBA habe, ist das aber sicherlich nicht der eleganteste Weg ;-)
Wenn ich nun aber in der InputBox auf Abbrechen klicke, weil ich doch kein neues Tabellenblatt einfügen möchte, bekomme ich eine Fehlermeldung. Hat jemand eine Lösung, wie ich diese Fehlermeldung beheben kann?
Zudem würde ich das Tabellenblatt "Vorlage" gerne ausblenden, allerdings funktioniert dann das Makro nicht mehr.
Löschen-Makro
Beim Ausführen dieses Makros soll ein Auswahlfenster angezeigt werden, welches alle existierenden Tabellenblätter auflistet (wenn möglich ohne die ausgeblendeten).
Damit soll auswählt werden, welches Tabellenblatt gelöscht werden soll.
Ich habe es leider nur hinbekommen, das aktive Tabellenblatt zu löschen und keine Idee, wie ich das Auswahlfeld umsetzen kann.
Hier meine aktuelle Eingabe zum Einfügen-Makro

Sub neue_mappe()
Dim x As String
x = InputBox("Name der neuen Kategorie:")
Sheets("Vorlage").Select
Sheets("Vorlage").Copy Before:=Sheets("Vorlage")
Sheets("Vorlage (2)").Name = x
End Sub
Ich hoffe meine Beschreibung ist trotz meiner sehr eingeschränkten Kenntnisse verständlich und ich würde mich sehr über Lösungen oder Ideen freuen.
Viele Grüße
Malte

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makros-Kopieren & Löschen von Blättern
30.11.2021 15:05:09
Blättern
Hi Malte,
blende "Vorlage" doch im Makro ein- und wieder aus. Die leere Inputbox fange ich einfach ab.

Sub neue_mappe()
Dim x As String
x = InputBox("Name der neuen Kategorie:")
If Not x = "" Then
With Sheets("Vorlage")
.Visible = True
.Copy Before:=Sheets("Vorlage")
.Visible = False
End With
Sheets("Vorlage (2)").Name = x
End If
End Sub
LG,
Klaus M.
ich lass mal offen, weil ich nix zum Löschen-Makro geschrieben habe.
AW: Makros-Kopieren & Löschen von Blättern
30.11.2021 21:42:20
Blättern
Hallo Klaus,
es klappt :-) Großartig!
Vielen Dank für deine Lösung!
Liebe Grüße
Malte
AW: Makros-Kopieren & Löschen von Blättern
30.11.2021 16:30:49
Blättern
Hallo Malte,
für das Löschen mit ActiveX-Listbox z. B.:

Private Sub ListBox1_Click()
Dim Listenwert As Long
For Listenwert = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(Listenwert) Then
If Worksheets(Listenwert).Visible = xlSheetHidden Then Exit Sub
Worksheets(Listenwert).Delete
End If
Next Listenwert
End Sub
Wenn du nun auch noch die Listbox dynamisch haben möchtest, dann z. B. folgenden Code noch zusätzlich (und einen Commandbutton einfügen natürlich): (geklaut von Nepumuk)

Private Sub CommandButton1_Click()
Dim objSheet As Object
With ListBox1
.Clear
For Each objSheet In ThisWorkbook.Sheets
If objSheet.Visible = xlSheetVisible Then _
.AddItem objSheet.Name
Next
End With
End Sub
Gruß Pierre
Anzeige
geht natürlich auch mit Worksheet-Ereignis ..
30.11.2021 16:36:56
Pierre
... oder Workbook_Open oder sonstiges.
Das musst du dann aber entscheiden.
PS: Es geht um das Befüllen der Listbox!
Ach ja: Wenn dich stört, dass Excel vor dem Löschen die obligatorische Frage stellt, ob du wirklich wirklich wirklich sicher bist, dass du das Blatt löschen willst, dann schreibe direkt unter dem "Private Sub Listbox1_Click()" folgendes:

Application.DisplayAlters = False
Und ganz wichtig: Direkt vor "End Sub" die Gleiche Zeile einfügen, allerdings mit "= True"
Gruß Pierre
AW: geht natürlich auch mit Worksheet-Ereignis ..
30.11.2021 21:51:12
Malte
Hallo Pierre,
vielen Dank für deine Hilfe.
Ich habe alles eingesetzt und es klappt an sich sehr gut.
Das einzige Problem ist, dass er nicht das in der Listbox ausgewählte Tabellenblatt löscht, sondern das davor. Also wenn ich z.B. das dritte Tabellenblatt auswähle und auf den Löschen-Button klicke, löscht er das zweite Tabellenblatt (das, was unten im Reiter links davon steht).
Hast du eine Idee, woran das liegen könnte?
Viele Grüße
Malte
Anzeige
AW: Makros-Kopieren & Löschen von Blättern
01.12.2021 10:18:45
Blättern
Hallo Malte,
frag mich nicht, warum das so ist :-) Hab ich irgendwie gar nicht gesehen, dass immer das vorherige Blatt gelöscht wird.
Jedenfalls, kannst du es damit umgehen, dass du die Zeile:

Worksheets(Listenwert).Delete
so erweiterst:

Worksheets(Listenwert + 1).Delete
Gruß Pierre
Übrigens:
01.12.2021 10:23:39
Pierre
kannst du die Zeile:

If Worksheets(Listenwert).Visible = xlSheetHidden Then Exit Sub
komplett löschen, weil ausgeblendete Blätter sowieso nicht in der Liste auftauchen und somit muss ja nicht nochmal geprüft werden, ob Blatt ausgeblendet ist.
Nochmal die beiden Codes:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim objSheet As Object
With ListBox1
.Clear
For Each objSheet In ThisWorkbook.Sheets
If objSheet.Visible = xlSheetVisible Then .AddItem objSheet.Name
Next
End With
End Sub
Private Sub ListBox1_Change()
Dim Listenwert As Long
For Listenwert = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(Listenwert) Then
Worksheets(Listenwert + 1).Delete
End If
Next Listenwert
End Sub
Ich habe die Events mittlerweile geändert, ist aber im Prinzip nicht weiter wichtig.
Gruß Pierre
Anzeige
AW: Übrigens:
02.12.2021 20:22:13
Malte
Hallo Pierre,
gestern bin ich nicht dazu gekommen, aber habe deinen Tipp heute eingearbeitet.
Jetzt klappt es :-)
Vielen Dank dir!
Malte

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige