Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Makro Tabellenblätter sortieren

Makro Tabellenblätter sortieren
16.02.2015 08:31:54
Leif
Hallo zusammen,
ich habe folgendes Problem:
In meiner Arbeitsmappe wird ein bestehendes Tabellenblatt per Makro kopiert und eingefügt. Dadurch haben alle Tabellenblätter den gleichen Name mit entsprechendem Zähler. Also Test(1), Test(2), Test(3) usw....
Ich möchte dies Tabellenblätter nun nach dem Zähler aufsteigend sortieren. Bis Nummer 9 funktioniert dies auch. Nummer 10 wird dann allerdings nach 1 und vor 2 eingefügt und nicht wie gewünscht nach 9.
Hier das Makro:
Dim Zaehler1 As Integer, Zaehler2 As Integer
Dim Name As String
Name = ActiveSheet.Name
For Zaehler1 = 1 To Worksheets.Count
For Zaehler2 = Zaehler1 To Worksheets.Count
If UCase(Worksheets(Zaehler2).Name) < UCase(Worksheets(Zaehler1).Name) Then
Worksheets(Zaehler2).Move before:=Worksheets(Zaehler1)
End If
Next Zaehler2, Zaehler1
Worksheets(Name).Activate
Was mache ich falsch?
Vielen dank für die Hilfe im voraus.
Gruß
Leif Meyer

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro Tabellenblätter sortieren
16.02.2015 09:12:38
Klaus
Hi,
ist doch klar Leif - die Sortierung ist so richtig wie Excel sie vornimmt. Nenne das erste Tabellenblatt nicht "Test1" sondern "Test01", dann funktioniert es bis 99 Blätter. Wenn du mehr brauchst, nenne das erste Blatt "Test001" .. und so weiter.
Grüße,
Klaus M.vdT.

AW: Makro Tabellenblätter sortieren
16.02.2015 09:16:23
Daniel
Hi
das ist "normal".
da es sich um Texte handelt, ist für die Entscheidung ob grösser oder kleiner nur das erste unterschiedliche Zeichen von links relevant. Alle folgenden Zeichen spielen keine Rolle.
Wenn Texte, die Zahlen enthalten "richtig" sortiert werden sollen, müssen die Zahlen mit führenden Nullen aufgefüllt werden, so dass alle Zahlen in den Texten die selbe länge haben.
Das macht dieses Marko, welches du vorab laufen lassen solltest (ist ausgelegt für max 999 Blätter)
Sub BlattUmbennen()
Dim wsh As Worksheet
Dim Nme As String
Dim Nr As String
Dim Pos As Long
For Each wsh In ActiveWorkbook.Worksheets
Nme = wsh.Name
Pos = InStr(Nme, "(")
If Pos > 0 Then
Nr = Val(Mid(Nme, Pos + 1))
Nme = Left(Nme, Pos)
wsh.Name = Nme & Format(Nr, "000") & ")"
End If
Next
End Sub
Gruß Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige