Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
420to424
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
420to424
420to424
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Tabellenblätter löschen durch auswahl ? VBA
ralle
Hallo liebes Forum!
Zur Zeit stehe ich vor folgendem Problem:
Ich habe eine Datei mit mehreren Tabellenblättern (kann varriieren). Die Tabellenblätter haben als Namen eine 4stellige Nummer (nicht fortlaufend).
Ich möchte nun per VBA das man irgendwo eingeben kann welche Tabellenblätter nicht gelöscht werden sollen. Als Eingabe soll hier die 4stellige Nummer eingegeben werden. Nach der Eingabe der Nummer(n)sollen dann alle anderen gelöscht werden.
Ist soetwas möglich und wenn ja wie ?
Gruß
ralle

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Tabellenblätter löschen durch auswahl ? VBA
Josef
Hallo Peter!
Versuch's mal so.

Sub BlaetterLoeschen()
Dim strNum As String
Dim wks As Worksheet
strNum = InputBox("Bitte geben sie die Nummer an," & vbLf & _
"die nicht gelöscht werden soll!", "Nummer", "xxxx")
If strNum = "" Then Exit Sub
On Error GoTo FEHLER
With Application
.DisplayAlerts = False
.ScreenUpdating = False
End With
For Each wks In ThisWorkbook.Sheets
If InStr(1, wks.Name, strNum) = 0 Then wks.Delete
Next
FEHLER:
With Application
.DisplayAlerts = True
.ScreenUpdating = True
End With
End Sub

Gruß Sepp
An Sepp!!!!
ralle
Hallo Sepp!
bist Du auch wieder da!!
Habe das Makro gestestet, und es funktioiert soweit ganz gut. Es gibt aber noch einen kleinen Schönheitsfehler:
Mit diesem Makro kann ich eine Nummer auswählen, die nicht glöscht werden soll. Gibt es auch die Möglichkeit das ich mehrere Nummer (z.B. 20) eingeben kann, die nicht gelöscht werden sollen?
Gruß
ralle
Anzeige
Vielleicht so?
IngoG
Hallo Ralle,
hab eine Datei erstellt, die Dir die vorhandenen Tabellenblätter auflistet, aus denen Du dann die zu löschenden nacheinander auswählen kannst... Ist meiner Meinung nach die sicherere lösung...
https://www.herber.de/bbs/user/5836.xls
uU kannst Du ja die sicherheitsabfrage rausnehmen und so die performance bei sehr vielen zu löschenden Blättern etwas erhöhen (2 Klicks pro Blatt, momentan 3 Klicks)
Gruß Ingo
einfach Sub BlaetterLoeschen starten...
Gruß Ingo
PS eine Rückmeldung wäre nett...
AW: Vielleicht so?
ralle
Hallo Ingo!
In Deinem Beispiel klappt das wunderbar, wenn ich dies Makro aber in meiner Datei abspieln will funktioniert das nicht. Wie bekomme ich Dein Makro in meine Datei und wie schaffe ich es, dass es für alle geöffneten Excel-Mappen gilt ?
Gruß
ralle
Anzeige
AW: Vielleicht so?
IngoG
Hallo Ralle,
Du mußt im VBA editor das Modul und die Userform in deine Personl.xls kopieren.
dazu öffnest Du meine Datei und nat. die Personl.xls und ziehst im objektfenster einfach das modul und die userform auf personl.xls .
Danach kannst Du einen button in deine buttonleiste integrieren und das macro (aus personl.xls) damit verknüpfen...
Gruß Ingo
PS eine Rückmeldung wäre nett...
AW: An Sepp!!!!
Josef
Hallo Peter!
Ich würde eine UserForm erstellen, mit einem
Listenfeld (ListStyle=fmListStyleOption, Multiselect=fmMultiSelectMulti)
und zwei Commandbutton.
Und dann dieser Code im Modul der UF.

Private Sub CommandButton1_Click()
Unload Me
End Sub


Private Sub CommandButton2_Click()
DelSheets
End Sub


Private Sub UserForm_Activate()
ListSheets
CommandButton1.Caption = "Abbrechen"
CommandButton2.Caption = "Auswahl löschen"
End Sub


Private Sub ListSheets()
Dim wks As Worksheet
Me.ListBox1.Clear
For Each wks In ThisWorkbook.Sheets
Me.ListBox1.AddItem wks.Name
Next
End Sub


Private Sub DelSheets()
Dim intC As Integer
On Error GoTo FEHLER
With Application
.DisplayAlerts = False
.ScreenUpdating = False
End With
With Me.ListBox1
If .ListCount > 1 Then
For intC = 0 To .ListCount - 1
If .Selected(intC) Then
Sheets(.List(intC)).Delete
End If
Next
End If
End With
ListSheets
FEHLER:
With Application
.DisplayAlerts = False
.ScreenUpdating = False
End With
End Sub

Ich kann dir heute Abend auch eine Beispielmappe hochladen.
(hier von der Arbeit kann ich nichts hochladen!)
Gruß Sepp
Anzeige
fehler!
Josef
Hallo Peter!
nach
FEHLER:
muss es natürlich so heisen!
With Application
.DisplayAlerts = True
.ScreenUpdating = True
End With
Gruß Sepp
AW: An Sepp!!!!
ralle
Hallo Sepp!
Das wäre sehr nett von Dir wenn Du mir die Beispielmappe hochladen würdest.
Also bis heute abend!
Gruß
ralle
hier ist die Datei!
Josef
Hallo Peter!
Ist ein wenig spät geworden ;-)
Hier die versprochene Datei.
Achte auf den neuen Menüpunkt in der Arbeitsblatt-Menüleiste!
https://www.herber.de/bbs/user/5864.xls
Gruß Sepp
kleiner Schönheitsfehler!
ralle
Hallo Sepp!
Habe das Makro ausprobiert und es funktioniert super !
Hab nur noch einen Schönheitsfehler:
Meine Datei hat ca. 30 Tabellenblätter (können auch mal mehr sein). Wenn ich nun das Makro starte passen diese nicht ganz in die Liste rein und ich muß runterscrollen (soweit ok) jedoch werden die Namen der Tabellenblätter, die erst durch das scrollen Sichtbar werden falsch benannt und zwar nach dem Namen des Tabellenblattes das als letztes noch in den Sichtbaren Bereich der Liste passen. Erst wenn ich diese Tabellenblätter in der Liste mit der Maus makiere erscheint der richtige Name.
Woran kann das liegen? (Hoffe Du hast meine Frage verstanden)
Gruß
ralle
Anzeige
AW: kleiner Schönheitsfehler!
Josef
Hallo Peter!
Ich verstehe diene Frage, kann das Problem aber
nicht nachvollziehen!
Bei mir werden alle Tabellennamen korrekt dargestellt!
Ändere mal diesen Code

Private Sub FillList()
Dim wks As Worksheet
'ListBox füllen
lstSheet.Clear
For Each wks In Workbooks(cmbFile.Text).Sheets
lstSheet.AddItem wks.Name
Next
Me.Repaint '##Neu##
End Sub

Vielleicht hilft's
Gruß Sepp
Danke! funktioniert super !! o.T.
30.04.2004 11:54:00
ralle
.

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige