Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
308to312
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
308to312
308to312
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

alle leeren tabellen löschen

alle leeren tabellen löschen
11.09.2003 11:48:22
Martina
Hallo!

Wie kann ich mittels VBA alle Tabellen ohne Inhalt löschen?

mfg, Martina

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: alle leeren tabellen löschen
11.09.2003 12:50:24
Koenig W.
Hallo Martina
so könnte es gehen

Sub TabLeer()
Dim i As Integer
Application.DisplayAlerts = False
On Error Resume Next
For i = ActiveWorkbook.Sheets.Count To 1 Step -1
Sheets(i).Activate
If ActiveCell.SpecialCells(xlLastCell).Address = _
"$A$1" Then Sheets(i).Delete
Next i
Application.DisplayAlerts = True
End Sub

Du ermittelst mit count die Anzahl Blätter, dann löschst Du mit einer Schleife von hinten nach vorn, sofern die letzte gebrauchte Zelle auf der jeweiligen Tabelle A1 ist.
Um Nachfragen des Systems zu verhindern, schaltest Du die Warnmeldungen mit Displayalert=False aus und am Schluss auch wieder ein. Bei einem Fehler fährt der Code weiter (On error resume next).
Gruss Wilhelm
Anzeige
AW: alle leeren tabellen löschen
11.09.2003 22:10:54
Martina
Danke schön für die Hilfe

Ich habs jetzt so gelöst:

Dim i
On Error Resume Next
Application.DisplayAlerts = False
For i = ActiveWorkbook.Sheets.Count To 1 Step -1
Sheets(i).Activate
If ActiveCell.SpecialCells(xlLastCell).Address = "$A$1" _
Then Sheets(i).Delete
Next i
Application.DisplayAlerts = True


Eine Frage hab ich aber noch zu dem Ausdruck "xlLastCell". In der Hilfe gibts dazu nämlich keine Erkärung. Dort kommt nur "xlCellTypeLastCell" vor. Bedeuten diese beiden Ausdrücke genau das selbe? Kann man beide verwenden?

Danke, Martina
Anzeige
AW: alle leeren tabellen löschen
11.09.2003 13:03:13
WernerB.
Hallo Martina,

mein Vorschlag:

Sub TabellenKiller()
Dim i As Integer, j As Integer
Dim loesch As Boolean
Application.ScreenUpdating = False
For i = Worksheets.Count To 1 Step -1
loesch = False
With Worksheets(i)
For j = 1 To 256
If WorksheetFunction.CountA(.Columns(j)) > 0 Then
loesch = False
Exit For
Else
loesch = True
End If
Next j
End With
If loesch = True Then
Application.DisplayAlerts = False
Worksheets(i).Delete
Application.DisplayAlerts = True
End If
Next i
Application.ScreenUpdating = True
End Sub

Viel Erfolg wünscht
WernerB.

P.S.: Das Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter (siehe Forums-FAQ).
Anzeige
DANKE: alle leeren tabellen löschen
11.09.2003 18:01:52
Martina
Danke schön für die Hilfe

Ich habs jetzt so gelöst:

Dim i
On Error Resume Next
Application.DisplayAlerts = False
For i = ActiveWorkbook.Sheets.Count To 1 Step -1
Sheets(i).Activate
If ActiveCell.SpecialCells(xlLastCell).Address = "$A$1" _
Then Sheets(i).Delete
Next i
Application.DisplayAlerts = True

Eine Frage hab ich aber noch zu dem Ausdruck "xlLastCell". In der Hilfe gibts dazu nämlich keine Erkärung. Dort kommt nur "xlCellTypeLastCell" vor. Bedeuten diese beiden Ausdrücke genau das selbe? Kann man beide verwenden?

Danke, Martina
Anzeige
AW: DANKE: alle leeren tabellen löschen
12.09.2003 07:40:27
WernerB.
Hallo Martina,

'SpecialCells(xlLastCell)' und ähnliche Ausdrücke benutze ich in meinen Makros grundsätzlich nicht; die sind mir zu gefährlich, weil sie nicht immer das zurückliefern, was ich eigentlich erwarte. Vor der Nutzung dieser Ausdrücke sollte die Datei grundsätzlich gespeichert werden.

Beispiel:

Füge einer Datei ein neues ("jungfräuliches") Blatt hinzu.
Versehe dann den Zellbereich "A1:E10" mit irgendwelchen Inhalten.
Lass Dir dann mit 'MsgBox ActiveCell.SpecialCells(xlLastCell).Address' die Zelladresse der letzten benutzten Zelle ausgeben. Ergebnis: "E10" (richtig).
Lösche dann die Inhalte im Bereich "A1:E10" und lasse Dir dann die Zelladresse erneut ausgeben. Ergebnis: "E10" (falsch).
Speichere dann die Datei und lasse Dir nochmal die Zelladresse anzeigen. Ergebnis: "A1" (richtig; wobei "A1" einen Inhalt haben kann oder auch nicht).

Soviel zu diesem Thema.

Gruß WernerB.
Anzeige

227 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige