Microsoft Excel

Herbers Excel/VBA-Archiv

Tabellenblätter löschen, wenn Zelle leer

Betrifft: Tabellenblätter löschen, wenn Zelle leer von: Jana
Geschrieben am: 21.01.2021 18:39:46

Ich möchte gerne automatische Quittungen erstellen. Dazu gibt es das "Bestellblatt" mit allen Mitarbeiternamen (Zellen "A10:A84"). Wenn die Gesamtsumme (Zellen "AG10:84") bei dem jeweiligen Mitarbeiter nicht leer ist, soll ein Tabellenbaltt mit einer Quittung angelegt werden und die tägliche Bestellung des Mitarbeiters aus dem Bestellblatt übernommen werden. Dazu habe ich ein Tabellenblatt "Quittung_Muster" erstellt und die entsprechenden Zellbezüge hergestellt.
Nun zur VGA-Programmierung:

Sub Quittungen_anlegen()
Dim quittMuster As Range, zz As Long, ss As Long
  
Set quittMuster = Sheets("Quittung_Muster").Columns("A:C")
   
   With Sheets("Bestellblatt")
      For zz = (10) To (84)
         For ss = 1 To Sheets.Count
            If Sheets(ss).Name = CStr(.Cells(zz, 1)) Then
               MsgBox "Blatt '" & .Cells(zz, 1) & "' bereits vorhanden.", vbInformation
               Exit For
            End If
         Next ss
         If ss > Sheets.Count Then
            Worksheets.Add after:=Sheets(Sheets.Count)
            quittMuster.Copy Cells(1, 1)
            Cells(4, 2) = .Cells(zz, 1)
            ActiveSheet.Name = CStr(Cells(4, 2))
         End If
      Next zz
   End With
End Sub

Das funktioniert gut. Nun möchte ich aber die Quittungen wieder automatisch löschen, deren Gesamtsumme (Zelle: C33) 0 € beträgt. Ich habe es so probiert, aber das funktioniert leider nicht:
Function Loeschen()
Dim objBlatt As Worksheet
Application.DisplayAlerts = False
For Each objBlatt In Worksheets
    Select Case objBlatt.Name
        Case "Bestellblatt", "Quittung_Muster"
        Case Else
            If objBlatt.Cells(33, 2).Value = "" Then objBlatt.Delete
    End Select
    Next
Application.DisplayAlerts = True
End Function

Ich würde mich sehr freuen, wenn Ihr mir weiterhelfen könntet. Hier die Excel-Datei: https://www.herber.de/bbs/user/143206.xlsx

Schon einmal vielen lieben Dank.

Betrifft: AW: Tabellenblätter löschen, wenn Zelle leer
von: Regina Resch-Jansen
Geschrieben am: 21.01.2021 18:49:59

Hi,
Du musst dann auch auf 0 prüfen und nicht auf "" (leer)

Gruß Regina

Betrifft: AW: Tabellenblätter löschen, wenn Zelle leer
von: GerdL
Geschrieben am: 21.01.2021 21:13:56

Moin Jana,

... und Sub Loeschen statt Function Loeschen sowie Cells(33, 3) für C33.

Gruß Gerd

Betrifft: AW: Tabellenblätter löschen, wenn Zelle leer
von: Herbert_Grom
Geschrieben am: 22.01.2021 09:57:53

Hallo Jana,

probiers mal damit, damit hat es bei mir funktioniert:
Sub Quittungen_loeschen()
   Dim iCount%
   For iCount = 1 To Sheets.Count - 2
      If Sheets("Name " & iCount).Cells(33, 3) = 0 Then
         Application.DisplayAlerts = False
         Sheets("Name " & iCount).Delete
      End If
   Next iCount
End Sub
Servus

Betrifft: AW: Tabellenblätter löschen, wenn Zelle leer
von: Jana
Geschrieben am: 22.01.2021 13:26:07

Vielen lieben Dank, es hat geklappt.

Betrifft: AW: Gerne geschehen und danke für die Rückmeldung!
von: Herbert_Grom
Geschrieben am: 22.01.2021 15:31:24

,,,