Live-Forum - Die aktuellen Beiträge
Datum
Titel
19.04.2024 12:23:24
19.04.2024 11:45:34
Anzeige
Archiv - Navigation
1124to1128
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
Inhaltsverzeichnis

Tabellenblätter mit Inhaltsverzeichnis löschen | Herbers Excel-Forum

Tabellenblätter mit Inhaltsverzeichnis löschen
04.01.2010 18:33:06
Heinz

Hallo
Ich suche seit geraumer Zeit nach der Lösung folgenden Problems:
Ich arbeite mit einer Arbeitsmappe mit ca. 100 verschiedenen Tabellenblättern. Für jede Einzelarbeit brauche ich davon ca. 10-30 Blätter. Die nicht benötigten Blätter möchte ich mittels Makro am Ende löschen.
Mittels eines Addins wird das vorderste Tabellenblatt mit den Namen "Inhaltsverzeichnis" erstellt, in dem in den Zellen A3 bis A102 die Tabellenblattnamen aller Arbeitsblätter aufgelistet sind. Die Namen sind gleichzeitig Hyperlink zu den gleichnamigen Arbeitsblatt.
Nun möchte ich mittels Markieren der Zeilen mit dem Blattnamen im Tabellenblatt "Inhaltsverzeichnis" das verlinkte Tabellenblatt und die betreffende Zeile (nicht nur Zelle) im Tabellenblatt "Inhaltsverzeichnis" löschen.
Ich habe selbst schon gesucht und probiert, aber es gelingt mir nicht, das jeweils neu angewählte Worksheet "Blattname" in die Formel zu bekommen. Es bleibt immer das vorhergehende (gelöschte) dort stehen und damit geht es einfach nicht. Beipiel (aber bitte nicht lachen - VBA Anfänger)

Sub Makro3()
' Makro3 Makro
ActiveCell.Select
Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
Sheets("Blattname").Select
ActiveWindow.SelectedSheets.Delete
ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
Sheets("Inhaltsverzeichnis").Select
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Delete Shift:=xlUp
End Sub
oder
Sub Tabellenlätter_löschen_H1()
Application.DisplayAlerts = False
Selection.EntireRow.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
Sheets("Blattname").Select
ActiveWindow.SelectedSheets.Delete
ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
Sheets("Inhaltsverzeichnis").Select
Selection.Delete Shift:=xlUp
Range("A2").Select
Application.DisplayAlerts = True
End Sub
Kann mir da jemand helfen? Das würde mich sehr freuen, weil ich diesen Vorgang relativ oft - noch ?- händisch durchführe (aufwendiges Einzelblattlöschen).
Viele Grüsse
Heinz

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

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblätter mit Inhaltsverzeichnis löschen
04.01.2010 21:21:29
JOWE
Hallo Heinz,
könnte so klappen:
Private Sub Workbook_SheetBeforeDoubleClick(ByVal sh As Object, _
ByVal Target As Range, Cancel As Boolean)
Dim yn As Boolean
Cancel = True
yn = MsgBox("Worksheet '" & Target.Value & _
"' wirklich löschen?!", vbYesNo + _
vbCritical, "Tabellen löschen")
Application.DisplayAlerts = False
Sheets(Target.Value).Select
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
Sheets(sh.Name).Select
Rows(Target.Row).Delete
End Sub

Gruß
Jochen
AW: Tabellenblätter mit Inhaltsverzeichnis löschen
04.01.2010 22:07:13
Heinz
Hallo Jochen
Ich kriege die Formel leider nicht zum Laufen - es erscheint garnicht als Makro.
Entschuldige die laienhafte Frage - aber muß da in der ersten Zeile nicht irgendwo soetwas () oder ähnliches rein . Wenn ich es aber einfüge kommt Fehler beim kompilieren...
Könntest Du die Formel bitte nochmal anschauen?
Ich bräuchte auch nicht unbedingt die Nachfrage, ob ich wirklich löschen will.
Da bin ich mir da sehr sicher, weil ich die Blätter auswendig kenne.
Vielen Dank
Heinz
Anzeige
AW: Tabellenblätter mit Inhaltsverzeichnis löschen
04.01.2010 23:56:56
Heinz
Hallo Jochen
könnte doch klappen. Ich bin nur den Doppelclick nicht mehr gewohnt, weil ich alles mit Einfachklick mache.
Es hat mit Doppelclick auf den Link in der Spalte A des Tabellenblattes "Inhaltsverzeichnis" einige male funkioniert, daß nach Aufpoppen der MsgBox und der Bestätigung "ja, wirklich löschen" sowohl die Zeile
im Blatt "Inhaltsverzeichnis" und das angewählte Arbeitsblatt gelöscht waren. Jetzt bleibt er aber meist nach der MsgBox hängen und der Debugger weist auf die Zeile Sheets(Target.Value).Select und sagt "Index außerhalb des gültigen Bereiches". Eine gewisse Tücke hat auch der Doppelclick auf den Hyperlink -zu langsam, dann öffnet sich das angewählte Blatt, zu schnell und ein falsches Blatt ist weg. Aber die Zielrichtung könnte doch stimmen.
Da ich ich oft auch 30 (bis zu 80) Zeilen/Blätter aufeinanderfolgend löschen muß wäre mein Wunsch, daß ich z.B. 30-80 Zeilen markiere, dann auf einen Schaltbottom drücke und die 30-80 Zeilen und die 30-80 Blätter wären mit einem Klick weg.
Meinst Du, das wäre machbar?
Vielen Dank für die Mühe
Heinz
Anzeige
AW: Tabellenblätter mit Inhaltsverzeichnis löschen
05.01.2010 01:50:32
fcs
Hallo Heinz,
die folgende Prozedur kannst du z.B. per Buttonklick starten, nachdem du die zu löschenden Zeilen markiert hast. Die Markierungen kannst du auch in Spalte B machen. Du kannst Blöcke selektieren oder auch mehrere einzelne Zeilen (bei gedrückter Strg-Taste).
Gruß
Franz
Sub BlaetterLoeschen()
Dim rngSelektion As Range, Zeile As Range, lNr As Long, _
strBlatt As String, arrZeilen() As Long, arrBlatt() As String
lNr = 0
If MsgBox("Blätter in markierten Zeilen Löschen?", vbQuestion + vbYesNo, _
"Blätter Löschen") = vbYes Then
'Daten der zulöschenden Blätter einlesen
Set rngSelektion = Selection
For Each Zeile In rngSelektion.Rows
If Zeile.Row >= 3 And _
fncCheckSheet(ActiveWorkbook, Worksheets(1).Cells(Zeile.Row, 1).Text) = True Then
lNr = lNr + 1
ReDim Preserve arrZeilen(1 To lNr)
ReDim Preserve arrBlatt(1 To lNr)
arrZeilen(lNr) = Zeile.Row
arrBlatt(lNr) = Worksheets(1).Cells(Zeile.Row, 1)
Else
'Blatt mit Name in Spalte A ist nicht vorhanden
Worksheets(1).Cells(Zeile.Row, 2) = "Blatt nicht vorhanden"
End If
Next
If lNr > 0 Then
Application.ScreenUpdating = False
'Blätter löschen
Application.DisplayAlerts = False
ActiveWorkbook.Sheets(arrBlatt).Delete
Application.DisplayAlerts = True
'Zeilenlöschen
For lNr = lNr To 1 Step -1
Worksheets(1).Rows(arrZeilen(lNr)).Delete shift:=xlShiftUp
Next
Application.ScreenUpdating = True
End If
End If
End Sub
Function fncCheckSheet(wb As Workbook, varBlatt) As Boolean
'Prüft ob Blatt in Arbeitsmappe vorhanden
Dim objSheet As Object
For Each objSheet In wb.Sheets
If objSheet.Index = varBlatt Or LCase(objSheet.Name) = LCase(varBlatt) Then
fncCheckSheet = True
Exit For
End If
Next
End Function

Anzeige
AW: Tabellenblätter mit Inhaltsverzeichnis löschen
05.01.2010 08:44:27
Heinz
Hallo Franz
Dein Makro ist absolut perfekt und noch besser als ich gewagt habe es mir auszudenken. Warum bloß habe ich nicht schon vor 3 Jahren gefragt. Dein Makro spart mir wirklich viel Arbeit (mind. 1 x täglich, meistens öfter).
Wirklich große Klasse.
Ganz herzlichen Dank
Heinz

288 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige