tabellenblätter per vba auswählen und löschen
Guten Abend,
ist es möglich per vba mehrere Tabellenblätter auzuwählen und dann zu löschen, habe hier jetzt schon gesucht und nichts gefunden, bis eben eine antwort, weiß aber nicht wie ich sie anwenden muß.
grüße
Achim
Antwort schreiben
Antwort 1 von finger59 vom 12.04.2022, 22:05 Options
Hi Achim,
auch wenn ich nur sehr wenig VBA-Kenntnisse habe - generell ist das schon möglich.
Aber - was ist Dein Kriterium zum löschen?
Ich denke so wirst Du evtl. keine Lösung erhalten können, die Dir sofort weiterhilft, da jede Lösung mit einer Gegenfrage von Dir enden könnte, mit ... und wenn ich diese und jene haben möchte?
Die einfachste Methode wäre ansonsten das Aufzeichnen eines Makros mit dem Makrorekorder, aber ich denke das wird Dir nicht die Lösung bringen, die Du haben willst. Aber - es wäre die erste mögliche Antwort auf Deine Frage ;-).
In diesem Sinne... have a nice Day... Gruß Helmut
Antwort 2 von nighty vom 13.04.2022, 07:17 Options
hi all ^^
wie gewuenscht :-)
gruss nighty
alternativ zum index die worksheetnamen
Option Explicit
Sub WorkSheetsDelete()
Call EventsOff
Worksheets(Array(1, 3)).Delete
Call EventsOn
End Sub
Public Sub EventsOff()
With Application
.DisplayAlerts = False
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
End Sub
Public Sub EventsOn()
With Application
.DisplayAlerts = False
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
End Sub
Antwort 3 von nighty vom 13.04.2022, 07:25 Options
hi all ^^^
be dem modul EventsOn ist zu korrigieren
.DisplayAlerts =True
gruss nighty
Antwort 4 von speedy71 vom 13.04.2022, 11:18 Options
Hallo nighty,
erstmal Danke, bekomme aber bei der folgenden Zeile eine Fehlermeldung
Worksheets(Array(1, 3)).Delete
und zwar Index außerhalb des gültigen Bereichs,
ich denke mal das liegt daran das die Tabellenblätter immer wieder einen anderen Namen haben.
und was vielleicht nicht so rübergekommen ist, ich möchte nicht alle Tabellenblätter löschen sondern eben nur bestimmte und die möchte ich eben auswählen können.
grüße
Achim
Antwort 5 von nighty vom 15.04.2022, 12:45 Options
hi achim ^^
was haettest du dann fuer vorstellungen der darstellung :-)
bei sehr vielen worksheets vielleicht gruppenbildung,da ja ansonsten kaum ein unterschied zur haendichen selectierung waere,eine userform wuerde auch den rahmen sprengen :-)))
das obige beispiel geht ueber einen index und namen spielen dabei eigentlich keine rolle
du siehst,es gibt mehrere varianten
so waere es auch moeglich die darstellung in einer spalte wiederzugeben(falls die reiter ausgeblendet sein sollten) und bei mouseclick zu loeschen
gruss nighty
Antwort 6 von speedy71 vom 15.04.2022, 21:01 Options
Hallo nighty,
habe jetzt die Tabelle ein wenig geändert, lasse mir nun die Tabellennamen per VBA auslesen und in der Tabelle 1 ( Eingabe ) in die Spalte D ab der Zeile 5 Eintragen, was ich jetzt erreichen möchte ist das wenn ich den Button hinter der Spalte anklicke eben dieses Tabellenblatt gelöscht wird.
grüße
Achim
Antwort 7 von speedy71 vom 16.04.2022, 09:10 Options
Hallo,
so habe nun meine Problem gelöst, hier nun meine Lösung.
Sub Tabellenblatt_loeschen()
Dim TabName As String
Dim WS As Worksheet
' Tabellenname wird aus Zelle gelesen
TabName = Range("d5")
For Each WS In Worksheets
If WS.Name = TabName Then
WS.Delete
End If
' Die Zelle mit den Namen wird gelöscht
Range("D5").Select
Selection.ClearContents
Next
End Sub
Danke noch einmal die mir dabei Helfen wollten.
grüße
Achim
Antwort 8 von nighty vom 16.04.2022, 09:47 Options
hi achim ^^
hier noch eine variante,die nicht ins leere laeuft :-))
gruss nighty
Sub DeinMakro()
If SheetExists("" & Cells(5, 4)) = True Then Worksheets("" & Cells(5, 4)).Delete
End Sub
Public Function SheetExists(strName As String) As Boolean
On Error Resume Next
SheetExists = Not Worksheets(strName) Is Nothing
End Function