Anzeige
Archiv - Navigation
224to228
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
224to228
224to228
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Sortieren von Blättern in einem workbook

Sortieren von Blättern in einem workbook
04.03.2003 11:15:04
Christian
Hallo beinander!

Ich habe folgendes problem: ich habe in einem file mehrere blätter, die sich in etwa (namentlich) so darstellen:

"MKA act cum", "MKA act", "MKL act cum"...

was ich nun möchte ist, dass ein bestimmter berecih (array...) nach sortiert wird und zwar nach dem krietrium ob "act cum" im namen enthalten ist. ergo sollten nach dem sortieren alle blätte mit "act cum" nacheinander stehen und die mit "act" ebenfalls.

besten dank im vorhinein!

christian

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Sortieren von Blättern in einem workbook
04.03.2003 11:23:40
th.heinrich

hallo Chritian alter lateiner ;-)

mal als ansatz

Aufsteigende Sortierung der Tabellen nach dem Tabellennamen


Sub Tabellensort_aufsteigend()
For i = 1 To Worksheets.Count - 1
x = Worksheets(i).Name
For j = i + 1 To Worksheets.Count
If Worksheets(j).Name < x Then
x = Worksheets(j).Name
End If
Next j
Worksheets(x).Move Before:=Worksheets(i)
Next i
End Sub


von Martin Beck

das funzzt mit tab1, tab2 usw. tab a, tab b usw. klappt auch.

probiers einfach mal aus.

gruss thomas

Re: Sortieren von Blättern in einem workbook
04.03.2003 11:34:58
christian

das macro funktioniert logischerweise prächtig,

sortiert entsprechend nach dem alphabert (soweit ok), nur ist mein kriterium zum sortieren eben leider in der mitte des namens...


ergo wird allgemein sortiert und mein kriterium nicht beachtet...

besten dank,

chirstian nehammer

Anzeige
Andere V ariante zum sortieren...
04.03.2003 13:11:16
Ramses

Hallo Christian,

probier das mal aus. Muss unter Umständen zweimal ausgeführt werden, wenn die erste Datei bereits "cum" enthält.


Option Explicit

Sub Tabellensort_aufsteigend_modified()
'(C) Ramses
Dim i As Integer, j As Integer, n As Integer
Dim strV As String, strName As String
strV = "cum"
For i = 1 To Worksheets.Count
    For n = 1 To Len(Worksheets(i).Name) - 2
        If Mid(Worksheets(i).Name, n, 3) = strV Then
            Worksheets(i).Name = "_C_" & Worksheets(i).Name
            Debug.Print Worksheets(i).Name
        End If
    Next n
Next i
For i = 1 To Worksheets.Count
    strName = Worksheets(i).Name
    For j = i To Worksheets.Count
        If Worksheets(j).Name > strName Then
            strName = Worksheets(j).Name
        End If
    Next j
    Worksheets(strName).Move Before:=Worksheets(i)
Next i
For n = 1 To 2
    For i = 1 To Worksheets.Count
        If Left(Worksheets(i).Name, 3) = "_C_" Then
            Worksheets(i).Name = Right(Worksheets(i).Name, Len(Worksheets(i).Name) - 3)
        End If
    Next i
Next n
End Sub 

     Code eingefügt mit Syntaxhighlighter 1.16

Der Schluss N = 1 to 2 ist eine Verlegenheit, ich weiss nicht woran es liegt, aber dann geht es:-)

Gruss Rainer

Anzeige
Andere V ariante zum sortieren...
04.03.2003 13:11:38
Ramses

Hallo Christian,

probier das mal aus. Muss unter Umständen zweimal ausgeführt werden, wenn die erste Datei bereits "cum" enthält.


Option Explicit

Sub Tabellensort_aufsteigend_modified()
'(C) Ramses
Dim i As Integer, j As Integer, n As Integer
Dim strV As String, strName As String
strV = "cum"
For i = 1 To Worksheets.Count
    For n = 1 To Len(Worksheets(i).Name) - 2
        If Mid(Worksheets(i).Name, n, 3) = strV Then
            Worksheets(i).Name = "_C_" & Worksheets(i).Name
            Debug.Print Worksheets(i).Name
        End If
    Next n
Next i
For i = 1 To Worksheets.Count
    strName = Worksheets(i).Name
    For j = i To Worksheets.Count
        If Worksheets(j).Name > strName Then
            strName = Worksheets(j).Name
        End If
    Next j
    Worksheets(strName).Move Before:=Worksheets(i)
Next i
For n = 1 To 2
    For i = 1 To Worksheets.Count
        If Left(Worksheets(i).Name, 3) = "_C_" Then
            Worksheets(i).Name = Right(Worksheets(i).Name, Len(Worksheets(i).Name) - 3)
        End If
    Next i
Next n
End Sub 

     Code eingefügt mit Syntaxhighlighter 1.16

Der Schluss N = 1 to 2 ist eine Verlegenheit, ich weiss nicht woran es liegt, aber dann geht es:-)

Gruss Rainer

Anzeige
Re: Andere V ariante zum sortieren...
04.03.2003 14:44:12
th.heinrich

hallo Rainer,

hier meckert vba

Worksheets(i).Name = Right(Worksheets(i).Name, Len(Worksheets(i).Name)

fehler beim kompilieren
syntaxfehler.

gruss thomas

?
04.03.2003 14:52:48
Ramses

Hallo Thomas,

kann ich leider nicht nachvollziehen.
Das Teil habe ich extra ein paar mal getestet. Läuft bei mir einwandfrei, ... und die Syntax ist unter 2000 und XP gleich.

Hast du das "- 3 )" auch bei dir im Code ?

Willst du die Tabelle mal haben ?

Gruss Rainer

Re: -3
04.03.2003 15:20:34
th.heinrich

hi Rainer,

die "-3" ging beim kopieren des codes verloren jetzt ohne fehlermeldung.

nachfrage: If Mid(Worksheets(i).Name, n, 3) bezieht auf die 3 mittleren zeichen ?

gruss thomas

Anzeige
Re: -3
04.03.2003 15:55:11
Ramses

Hallo Thomas,

Das "Mid(" geht über eine Schleife n und beginnt immer bei Position n die nächsten 3 Positionen mit dem String zu vergleichen.
Die Schleife endet immer drei Zeichen vor dem Ende des Tabellenblattnamens.

Gruss Rainer


Re: -3
04.03.2003 15:55:12
Ramses

Hallo Thomas,

Das "Mid(" geht über eine Schleife n und beginnt immer bei Position n die nächsten 3 Positionen mit dem String zu vergleichen.
Die Schleife endet immer drei Zeichen vor dem Ende des Tabellenblattnamens.

Gruss Rainer


danke o.t.
05.03.2003 00:10:12
th.heinrich

.

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige