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

Liste der Tabellennamen sortieren

Liste der Tabellennamen sortieren
22.04.2007 09:42:11
Fritz_W
Guten Morgen VBA-Experten,
mit dem nachfolgenden Makro liste ich die Tabellennamen der Arbeitsmappe auf.
Ich möchte nun die Liste nach folgenden Kriterien sortiert haben:
zunächst alle Tabellennamen, die mit einem Buchstaben beginnen, alphabetisch aufsteigend
danach die Tabellennamen, die mit einer Zahl beginnen, ebenfalls aufsteigend
Wie muss der Code ergänzt werden?
Danke für eure Unterstützung.
mfg
Fritz

Sub Tabellen()
'Listet alle Tabellen der Arbeitsmappe in der Spalte A ab Zeile 2 auf
Dim InI As Integer
Calc = Application.Calculation: Beschleuniger xlCalculationManual
For InI = 2 To Sheets.Count
Cells(InI, 1) = Sheets(InI).Name
Next InI
End Sub


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

Betreff
Datum
Anwender
Anzeige
AW: Liste der Tabellennamen sortieren
22.04.2007 10:15:00
Josef
Hallo Fritz,
probier mal so.
Sub TabellenSortieren()
Dim intC As Integer, lngR As Long, lngM As Long

lngR = 1

For intC = 2 To Sheets.Count
    If Not IsNumeric(Left(Sheets(intC).Name, 1)) Then
        lngR = lngR + 1
        Cells(lngR, 1) = Sheets(intC).Name
    End If
Next

Range(Cells(2, 1), Cells(lngR, 1)).Sort key1:=Cells(2, 1), order1:=xlAscending

lngM = lngR + 1

For intC = 2 To Sheets.Count
    If IsNumeric(Left(Sheets(intC).Name, 1)) Then
        lngR = lngR + 1
        Cells(lngR, 1) = Sheets(intC).Name
    End If
Next

Range(Cells(lngM, 1), Cells(lngR, 1)).Sort key1:=Cells(lngM, 1), order1:=xlAscending

End Sub

Gruß Sepp

Anzeige
AW: Liste der Tabellennamen sortieren
22.04.2007 10:29:37
Fritz_W
Halllo Sepp,
funktioniert wie - ursrünglich - gewünscht. Vielen Dank!!
Allerdings hab ich im Nachhinein (wieder einmal) den Wunsch nach einer Veränderung (Sorry):
Folgende Sortierkriterien:
zunächst alle Tabellen, die nicht mit einer Zahl beginnen und deren Tabellennamen aus mehr als 2 Buchstaben besteht alphabetisch aufsteigend sortieren,
anschließend die Tabellen, die nicht mit einer Zahl beginnen, alphabetisch aufsteigend
danach (wie gehabt) die Tabellen, deren Tabellennamen aus einer Zahl besteht aufsteigend
Geht das noch? Wäre prima!
Schönen Gruß
Fritz

Anzeige
AW: Liste der Tabellennamen sortieren
22.04.2007 10:43:19
Josef
Hallo Fritz,
dann so.
Sub TabellenSortieren()
Dim intC As Integer, lngR As Long, lngM As Long

lngR = 1

For intC = 2 To Sheets.Count
    If Not IsNumeric(Left(Sheets(intC).Name, 1)) And Len(Sheets(intC).Name) > 2 Then
        lngR = lngR + 1
        Cells(lngR, 1) = Sheets(intC).Name
    End If
Next

Range(Cells(2, 1), Cells(lngR, 1)).Sort key1:=Cells(2, 1), order1:=xlAscending

lngM = lngR + 1

For intC = 2 To Sheets.Count
    If Not IsNumeric(Left(Sheets(intC).Name, 1)) And Len(Sheets(intC).Name) <= 2 Then
        lngR = lngR + 1
        Cells(lngR, 1) = Sheets(intC).Name
    End If
Next

Range(Cells(lngM, 1), Cells(lngR, 1)).Sort key1:=Cells(lngM, 1), order1:=xlAscending

lngM = lngR + 1

For intC = 2 To Sheets.Count
    If IsNumeric(Left(Sheets(intC).Name, 1)) Then
        lngR = lngR + 1
        Cells(lngR, 1) = Sheets(intC).Name
    End If
Next

Range(Cells(lngM, 1), Cells(lngR, 1)).Sort key1:=Cells(lngM, 1), order1:=xlAscending

End Sub

Gruß Sepp

Anzeige
AW: Liste der Tabellennamen sortieren
22.04.2007 10:53:00
Fritz_W
Hallo Sepp,
ganz toll, nochmals vielen Dank!
Schönen Gruß
Fritz

AW: Liste der Tabellennamen sortieren
22.04.2007 10:26:55
Oberschlumpf
Hi Fritz
Ändere deinen Code um wie folgt:

Sub Tabellen()
'Listet alle Tabellen der Arbeitsmappe in der Spalte A ab Zeile 2 auf
Dim InI As Integer, liZeile As Integer, liIndex As Integer, liIndex1 As Integer
Calc = Application.Calculation: Beschleuniger xlCalculationManual
For InI = 2 To Sheets.Count
Cells(InI, 1) = Sheets(InI).Name
Next InI
liZeile = Cells(Rows.Count, 1).End(xlUp).Row + 2
liIndex = liZeile
liIndex1 = liZeile
For InI = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If IsNumeric(Left(Cells(InI, 1), 1)) = False Then
Cells(liIndex, 1) = Cells(InI, 1)
liIndex = liIndex + 1
Else
Cells(liIndex1, 2) = Cells(InI, 1)
liIndex1 = liIndex1 + 1
End If
Next
Range("A" & liZeile & ":A" & Cells(Rows.Count, 1).End(xlUp).Row).Sort _
Key1:=Range("A" & liZeile), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("B" & liZeile & ":B" & Cells(Rows.Count, 2).End(xlUp).Row).Sort _
Key1:=Range("B" & liZeile), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("A2:A" & liZeile - 2).Value = ""
Range("A" & liZeile & ":A" & Cells(Rows.Count, 1).End(xlUp).Row).Cut
Range("A2").Select
ActiveSheet.Paste
Range("B" & liZeile & ":B" & Cells(Rows.Count, 2).End(xlUp).Row).Cut
Range("A" & Cells(Rows.Count, 1).End(xlUp).Row + 1).Select
ActiveSheet.Paste
Range("A1").Select
End Sub


Erklärung:
Ab der Zeile
liZeile = Cells(Rows.Count, 1).End(xlUp).Row + 2
werden die Sheetnamen zuerst getrennt aufgelistet nach dem Kriterium erstes Zeichen = Buchstabe oder Zahl.
Diese Auflistung erfolgt in Spalte A, 2 Zeilen unterhalb des letzten, unsortierten Eintrages.
Dann werden die beiden getrennten Auflistungen jeweils für sich sortiert.
In den nächsten Schritten wird abschließend zuerst die unsortierte Auflistung gelöscht, und dann werden in Spalte A, ab Zeile2 zuerst die sortierten Sheetnamen beginnend mit Buchstaben und direkt darunter beginnend mit Zahlen aufgelistet.
Konnte ich helfen?
Ciao
Thorsten

Anzeige
AW: Liste der Tabellennamen sortieren
22.04.2007 10:33:34
Fritz_W
Hallo Thorsten,
Dir ebenfalls vielen Dank für deine Hilfe.
Schönen Gruß
Fritz

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige