9.2k Aufrufe
Gefragt in Tabellenkalkulation von
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

8 Antworten

0 Punkte
Beantwortet von finger59 Experte (1.3k Punkte)
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
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
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
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^^

be dem modul EventsOn ist zu korrigieren

.DisplayAlerts =True

gruss nighty
0 Punkte
Beantwortet von
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
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
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
0 Punkte
Beantwortet von
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
0 Punkte
Beantwortet von
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
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
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
...