Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1380to1384
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
Tabellenblätter löschen, wenn Name nicht ...
15.09.2014 15:11:08
Basti
Hallo Zusammen,
versuche mich gerade an einem ein Sub (), die alle Tabellenblätter einer Arbeitsmappe löscht, die nicht einen bestimmten Teil eines Textes aufweisen.
Ziel soll es sein, per InputBox den Tabellenblattname, der Blätter die gelöscht werden sollen, abzufragen.
Bsp: Tabelle-A_1; Tabelle-A_2; Tabelle-A_3; Tabelle-B_1; Tabelle-B_2; Tabelle-C_1.
Die Prozedur solle alle Blätter die den im Namen "Tabelle-B" oder "Tabelle-C" haben löschen.
Im Forum habe ich diesen Beitrag gefunden, der fast das tut was ich benötige.
https://www.herber.de/forum/archiv/1180to1184/1180979_wenn_bestimmtes_Tabellenblatt_existiertloeschen.html
Leider kann ich nur 100% Übereinstimmgungen damit löschen.
Danke für Euere Hilfe
Gruß
Basti

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblätter löschen, wenn Name nicht ...
15.09.2014 15:20:48
Rudi
Hallo,
Sub BlattKiller()
Dim sName As String, wks As Worksheet
sName = InputBox("Blattname?")
If sName  "" Then
On Error GoTo ERREXIT
Application.DisplayAlerts = False
For Each wks In Worksheets
If LCase(wks.Name) Like LCase(sName) & "*" Then
wks.Delete
End If
Next
End If
ERREXIT:
Application.DisplayAlerts = True
End Sub

Gruß
Rudi

AW: Tabellenblätter löschen, wenn Name nicht ...
15.09.2014 21:16:10
Basti
Hey Rudi,
wie immer Hilfsbereit, Danke!
Mit deinem Code kann man zwar bestimmte Blätter löschen, aber leider noch nicht 100%ig was ich benötige. Wahrscheinlich habe ich nicht eindeutig genug geschrieben.
"versuche mich gerade an einem ein Sub (), die alle Tabellenblätter einer Arbeitsmappe löscht, die nicht einen bestimmten Teil eines Textes aufweisen."
Ich habe eine Mappe mit vielen Blättern. Innerhalb dieser Mapper interessieren mich allerdings nur zwei Typen, die dummerweise beliebig vorkommen können und immer einen bestimmten Teil eines Textes im Namen aufweisen.
Bsp: A1; A2; B1; B2; C1; C2; D1; D2
Der Code solle jetzt alle Blätter löschen, die nicht A oder B im Namen haben.
Hast Du vielleicht für dieses Problem einen Vorschlag?
Gruß
Basti

Anzeige
AW: Tabellenblätter löschen, wenn Name nicht ...
16.09.2014 09:51:00
Rudi
Hallo,
Sub BlattKiller()
Dim wks As Worksheet
On Error GoTo ERREXIT
Application.DisplayAlerts = False
For Each wks In Worksheets
Select Case Left(wks.Name, 1)
Case "A", "B"
'nix passiert
Case Else
wks.Delete
End Select
Next
ERREXIT:
Application.DisplayAlerts = True
End Sub

Gruß
Rudi

AW: Tabellenblätter löschen, wenn Name nicht ...
16.09.2014 12:23:57
Basti
Servus Rudi,
Code tut was er soll!
Allerdings ist mir aufgefallen, dass durch Anweisung

Select Case Left(wks.Name,1)

ein Bezug über die Zeichenlänge hergestellt wird und damit eine Abfrage per Inputboxm mit unterschiedlichen Zeichenlängen, bei mir nicht funktioniert.
Hast Du einen Tipp, der die Case-Anweisung variable halt und sie abhänig von der Länge der Eingabe macht?
Bsp: ABC-1;ABC-2;DEF-1;DEF-2;GHI-1;GHI-2
Es soll die Möglichkeit geben sein, dass ich entweder nur Blätter mit A, AB bzw. ABC beibehalte ohne das Ganze im Code anpassen zu müssen.
Gruß
Basti

Anzeige
AW: Tabellenblätter löschen, wenn Name nicht ...
16.09.2014 13:40:03
Rudi
Hallo,
Der Code solle jetzt alle Blätter löschen, die nicht A oder B im Namen haben.
macht meiner.
Du solltest konkreter/ realer werden.
Gruß
Rudi

AW: Tabellenblätter löschen, wenn Name nicht ...
16.09.2014 15:26:39
Basti
Servus Rudi,
ich gelobe Besserung!
Jedoch ist damit nicht das Problem gelöst. Solltest Du noch eine Idee haben, dann wäre ich dir sehr dankbar für deine Hilfe
Gruß
Basti

AW: Tabellenblätter löschen, wenn Name nicht ...
19.09.2014 07:57:59
fcs
Hallo basti,
versuch es mal hiermit.
Gruß
Franz
Sub BlattKiller()
Dim varName As Variant, wks As Worksheet, arrText
varName = InputBox("Beginn zu löschender Blattnamen:" & vbLf & "(mehrere durch ; trennen)" _
)
If varName  "" Then
On Error GoTo ERREXIT
arrText = Split(varName, ";")
Application.DisplayAlerts = False
For Each wks In Worksheets
For Each varName In arrText
'          If LCase(wks.Name) Like LCase(varName) & "*" Then
If LCase(Left(wks.Name, Len(varName))) = LCase(varName) Then
wks.Delete
Exit For
End If
Next
Next
End If
ERREXIT:
Application.DisplayAlerts = True
End Sub

Anzeige

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige