Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen

Tabellenblätter löschen, wenn Name nicht ...

Betrifft: Tabellenblätter löschen, wenn Name nicht ... von: Basti
Geschrieben am: 15.09.2014 15:11:08

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

  

Betrifft: AW: Tabellenblätter löschen, wenn Name nicht ... von: Rudi Maintaire
Geschrieben am: 15.09.2014 15:20:48

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


  

Betrifft: AW: Tabellenblätter löschen, wenn Name nicht ... von: Basti
Geschrieben am: 15.09.2014 21:16:10

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


  

Betrifft: AW: Tabellenblätter löschen, wenn Name nicht ... von: Rudi Maintaire
Geschrieben am: 16.09.2014 09:51:00

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


  

Betrifft: AW: Tabellenblätter löschen, wenn Name nicht ... von: Basti
Geschrieben am: 16.09.2014 12:23:57

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


  

Betrifft: AW: Tabellenblätter löschen, wenn Name nicht ... von: Rudi Maintaire
Geschrieben am: 16.09.2014 13:40:03

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


  

Betrifft: AW: Tabellenblätter löschen, wenn Name nicht ... von: Basti
Geschrieben am: 16.09.2014 15:26:39

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


  

Betrifft: AW: Tabellenblätter löschen, wenn Name nicht ... von: fcs
Geschrieben am: 19.09.2014 07:57:59

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



 

Beiträge aus den Excel-Beispielen zum Thema "Tabellenblätter löschen, wenn Name nicht ..."