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

Sehr viele leere Tabellenblätter löschen

Sehr viele leere Tabellenblätter löschen
30.03.2008 16:43:32
Born
Hallo,
weiß jemand, wie man auf einfache Weise Tabellenblätter löscht, die nur für
Importzwecke geöffnet wurden und danach wieder weg müssen? Die heißen
natürlich alle der Reihe nach im Register Tabelle49, Tabellen50, Tabelle51 usw.
VBA-intern heißt aber die Tabelle109 im Moment Tabelle114.
Gibt es ein Skript, bei dem man nur eintragen könnte: Lösche von Tabelle49 bis
Tabelle 220?
Schönen Sonntag und herzlichen Dank,
Born in Berlin

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sehr viele leere Tabellenblätter löschen
30.03.2008 17:09:24
mumpel
Hallo!
Hier ein Beispiel. Wichtig ist, dass Du den Index der Tabelle angibst, nicht den Namen.

Sub Löschen()
On Error Resume Next
Application.DisplayAlerts = False
Dim i As Integer
Dim s As String
Dim c As String
s = InputBox("Bitte geben Sie die erste zu löschende Tabelle (Tabellenindex) an")
c = InputBox("Bitte geben Sie die letzte zu löschende Tabelle (Tabellenindex) an")
For i = c To s Step -1
Worksheets(i).Delete
Next i
Application.DisplayAlerts = True
End Sub


Gruß, Rene

AW: Sehr viele leere Tabellenblätter löschen
30.03.2008 18:12:00
Daniel
Hi
wozu Makro?
wenn die zu löschenden Tabellenblätter alle hintereinander stehen, dann einfach:
- linkes zu löschendes Tabellenblatt anklicken
- SHIFT gedrückt halten und rechtes zu löschendes Tabellenblatt anklicken
jetzt sollten alle zu löschenden Tabellenblätter markiert sein
weiter einzelne Tabellenblätter können hinzugfügt werden, dazu beim anklicken die STRG-Taste gedrückt halten
- mit rechter Maustaste auf die Reiter klicken und "Löschen" auswählen
fertig
dürfte Schneller gehen, als das Makro zu starten und dort die Blattnamen einzutippen.
Gruß, Daniel

Anzeige
AW: Sehr viele leere Tabellenblätter löschen
30.03.2008 18:31:56
Born
Hallo Daniel,
nette Idee, aber bei 300 Worksheets bist Du mit der Methode nicht schneller als ein
Makro. Allerdings habe die Lösung noch nicht begriffen.
Was könnte an diesem Script falsch sein? (Index außerhalb des gültigen Bereichs)

Sub Tabellenblatt_loeschen()
Dim TabNumberA As String
Dim TabNumberE As String
Dim I As Integer
TabNumberA = InputBox("Nummer des ersten Tabellenblatts eingeben")
TabNumberE = InputBox("Nummer des letzten Tabellenblatts eingeben")
For I = TabNumberA To TabNumberE
Worksheets("Tabelle" & "I").Delete
Next I
End Sub


Gruß,
Born

Anzeige
AW: Sehr viele leere Tabellenblätter löschen
30.03.2008 18:49:00
Daniel
HI
je nachdem wie die Sheets angeordet sind.
wenn das letzte zu löschende Sheet ganz am rechten Rand steht, bin ich klar schneller:
- linkes Sheet markieren
- Sheetreiter ganz nach rechts scrollen (dazu auf den rechten der 4 Buttons links neben den Reitern klicken)
- Shift drücken und rechtes Sheet markieren
- Mit rechter Maustaste auf nen Reiter klicken und löschen auswählen
damit hab ich die 300 Sheets gelöscht, bevor du uber EXTRAS-MAKRO-MAKROS überhaupt gestartet hast (naja, fast).
warums nicht funktioniert?
weil du deine Variable in Anführungszeichen gesetzt hast, und damit das I nicht als Variable sondern als fester Text interpetiert wird.
dh. du versucht, 300x das Sheet "TabelleI" zu löschen, und das gibts nicht.
Gruß, Daniel

Anzeige
AW: Sehr viele leere Tabellenblätter löschen
30.03.2008 18:55:30
mumpel
Du musst immer das letzte zu löschende Blatt zuerst löschen, wie in meinem Beispiel. Auch das Step -1 muss bleiben. Weshalb hälst Du Dich nicht an meinem Beispielcode? Wenn Du das erste Blatt zuerst löschst, dann stimmt logischerweise der Index nicht mehr. Immer von hinten nach vorn löschen.

AW: Sehr viele leere Tabellenblätter löschen
30.03.2008 19:07:06
Daniel
HI Mumpel
macht es wirklich Sinn, die Index-Nr. als Eingabe zu forden?
da müsste ich ja jedes mal die Tabellenblätter abzählen.
Sinnvoller wäre es, die beiden Tabellenblattnamen eingeben zu lassen, dann kannst du über
Sheets(Tabellenblattname).INDEX
die Index-Nummern ermittlen und damit die Löschschleife aufbauen.
Wenn man zusätzlich mit MIN und MAX arbeitet, ist dann auch die Reihenfolge, in der eingegeben wurde, egal

Sub Löschen()
Application.DisplayAlerts = False
Dim i As Integer
Dim s As String
Dim c As String
s = InputBox("Bitte geben Sie die erste zu löschende Tabelle an")
c = InputBox("Bitte geben Sie die letzte zu löschende Tabelle an")
For i = WorksheetFunction.Max(Sheets(s).Index, Sheets(c).Index) To WorksheetFunction.Min(Sheets( _
s).Index, Sheets(c).Index) Step -1
Worksheets(i).Delete
Next i
Application.DisplayAlerts = True
End Sub


Gruß, Daniel
btw "On Error Resume Next" sollte man nie pauschal über ein Makro drüber schreiben, das vertuscht nur die Fehler und erschwert die Fehlersuche ungemein.
im Schlimmsten Fall gibts falsche Ergebnisse, ohne das ein Fehler gemeldet wird.

Anzeige

227 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige