Microsoft Excel

Herbers Excel/VBA-Archiv

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

wenn bestimmtes Tabellenblatt existiert-löschen | Herbers Excel-Forum


Betrifft: wenn bestimmtes Tabellenblatt existiert-löschen von: Karsten
Geschrieben am: 06.10.2010 12:09:07

Hallo,

Ich möchte per VBA-Code herausfinden ob eine Tabellenblatt mit einem bestimmten Namen (z.B. "XXX") existiert. Wenn nein, dann soll es erstellt werden, wenn ja dann soll es ohne Nachfrage gelöscht werden.

Könnte mir jemand dabei helfen?

Danke
Karsten

  

Betrifft: AW: wenn bestimmtes Tabellenblatt existiert-löschen von: welga
Geschrieben am: 06.10.2010 12:16:41

Hallo,

vllt so:

Sub test()
Dim ws As Worksheet
Dim srstr As String
Dim a As Boolean
a = False

srstr = InputBox("Tabellennamen")
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For Each ws In ThisWorkbook.Worksheets
If ws.Name = srstr Then a = True
Next
If a Then
Sheets(srstr).Delete
Else
Sheets.Add after:=ThisWorkbook.Sheets.Count
Sheets(ThisWorkbook.Sheets.Count).Name = srstr
End If
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

Gruß


  

Betrifft: AW: wenn bestimmtes Tabellenblatt existiert-löschen von: welga
Geschrieben am: 06.10.2010 12:21:41

Sorry muss natürlich so heißen:

Sheets.Add after:=Sheets(ThisWorkbook.Sheets.Count)


  

Betrifft: AW: wenn bestimmtes Tabellenblatt existiert-löschen von: Karsten
Geschrieben am: 06.10.2010 12:37:46

Hallo welga,

es ging auch nicht und Rudi war schneller.

Nochmal Danke

Gruß
Karsten


  

Betrifft: AW: wenn bestimmtes Tabellenblatt existiert-löschen von: Rudi Maintaire
Geschrieben am: 06.10.2010 12:17:32

Hallo,

Function SheetExists(sName As String) As Boolean
  Dim sh
  For Each sh In Sheets
    If sh.Name = sName Then
      SheetExists = True
      Exit Function
    End If
  Next
End Function

Sub ttx()
  Const sName As String = "xxx"
  If SheetExists(sName) Then
    Application.DisplayAlerts = False
    Sheets(sName).Delete
    Application.DisplayAlerts = True
  Else
    Worksheets.Add
    ActiveSheet.Name = sName
  End If
End Sub

Gruß
Rudi


  

Betrifft: In der UDF fehlt ein LCase() oder UCase() _oT von: NoNet
Geschrieben am: 06.10.2010 12:22:13

_oT : "Tabelle2" <> "tabelle2"


  

Betrifft: Mopperkopp von: Rudi Maintaire
Geschrieben am: 06.10.2010 12:25:25

sollt er halt den Namen richtig schreiben ;-)

Gruß
Rudi


  

Betrifft: AW: wenn bestimmtes Tabellenblatt existiert-löschen von: Karsten
Geschrieben am: 06.10.2010 12:36:30

Hallo Rudi,

allerbesten Dank. Dafür hätte ich lange gebraucht und es doch nicht hingekriegt.

Gruß
Karsten


  

Betrifft: die Function sollte man von: Rudi Maintaire
Geschrieben am: 06.10.2010 12:48:23

wirklich wie von NoNet bemerkt korrigieren:

Function SheetExists(sName As String) As Boolean
  Dim sh
  For Each sh In Sheets
    If LCase(sh.Name) = LCase(sName) Then
      SheetExists = True
      Exit Function
    End If
  Next
End Function

Gruß
Rudi


  

Betrifft: Tabellenblatt per VBA löschen oder erstellen von: NoNet
Geschrieben am: 06.10.2010 12:20:40

Hallo Karsten,

hier ein Code-Beispiel :

Sub TabLoeschenErstellen()
    Const strshName = "Tabelle2" 'Der Name des zu überprüfenden Blattes
    Dim shTmp As Object
    
    On Error Resume Next 'Bei Fehler : Fortfahren im Code
    Set shTmp = Sheets(strshName)
    
    If shTmp Is Nothing Then
        Worksheets.Add.Name = strshName
    Else
        Application.DisplayAlerts = False 'Nicht nachfragen
        shTmp.Delete
        Application.DisplayAlerts = True 'Nicht nachfragen
    End If
    
    Set shTmp = Nothing
End Sub
Gruß, NoNet


  

Betrifft: AW: Tabellenblatt per VBA löschen oder erstellen von: Karsten
Geschrieben am: 06.10.2010 12:40:09

Hallo NoNet,

danke für die Mühe, aber ich habe nun Rudis Code drinn.

Gruß
Karsten


Beiträge aus den Excel-Beispielen zum Thema "wenn bestimmtes Tabellenblatt existiert-löschen "