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
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
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
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
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ß, NoNetUm zu prüfen, ob ein Tabellenblatt existiert und es gegebenenfalls zu löschen, kannst du folgenden VBA-Code verwenden:
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
Sub ttx()
Const sName As String = "xxx" ' Hier den Namen des Tabellenblatts anpassen
Application.DisplayAlerts = False
If SheetExists(sName) Then
Sheets(sName).Delete
Else
Worksheets.Add.Name = sName
End If
Application.DisplayAlerts = True
End Sub
Dieser Code überprüft, ob ein Tabellenblatt mit dem Namen "xxx" existiert. Falls ja, wird es gelöscht; falls nicht, wird ein neues Tabellenblatt erstellt.
Fehler: "Subscript out of range"
Fehler: "Cannot delete sheet"
Problem mit Groß-/Kleinschreibung
LCase()
oder UCase()
in deiner Funktion, um die Groß-/Kleinschreibung zu ignorieren.Eine einfache Alternative, um ein Tabellenblatt zu löschen, ist die Verwendung von On Error Resume Next
:
Sub TabLoeschenErstellen()
Const strshName = "Tabelle2"
Dim shTmp As Object
On Error Resume Next
Set shTmp = Sheets(strshName)
If shTmp Is Nothing Then
Worksheets.Add.Name = strshName
Else
Application.DisplayAlerts = False
shTmp.Delete
Application.DisplayAlerts = True
End If
Set shTmp = Nothing
End Sub
Mit dieser Methode wird der Code bei einem Fehler fortgesetzt, was die Handhabung von nicht existierenden Tabellenblättern erleichtert.
Hier sind einige praktische Anwendungen des Codes:
Application.ScreenUpdating = False
, bevor du mehrere Änderungen vornimmst, um die Leistung zu verbessern.1. Wie kann ich sicherstellen, dass ein Benutzer nicht versehentlich ein Tabellenblatt löscht?
Du kannst den Benutzer um Bestätigung bitten, bevor du das Löschen durchführst, indem du MsgBox
verwendest.
2. Funktioniert dieser Code in Excel 365? Ja, der Code ist mit Excel 365 sowie anderen Versionen von Excel kompatibel.
3. Was passiert, wenn ein Tabellenblatt mit einem ähnlichen Namen existiert? Der Code prüft auf exakte Übereinstimmung des Namens, daher wird nur das genau benannte Blatt betroffen sein.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen