ist es möglich innerhalb einer Arbeitsmappe mit ca 30 Tabellenblättern
diese Blätter automatisch zu sortieren? Wenn ja wie?
Danke schon mal für Eure Info
mfG Wolfgang
---"Wolfgang Schirmer" <wolfgang....@de.bosch.com> schrieb ...
> ist es möglich innerhalb einer Arbeitsmappe mit ca 30
> Tabellenblättern
> diese Blätter automatisch zu sortieren? Wenn ja wie?
Mit reinen Excel-Bordmitteln nicht.
Dazu müsste schon ein VBA-Makro erstellt werden.
Wonach willst du denn sortieren? Alphabetisch?
Oder brauchst du die Sortierreihenfolge nur zum schnelleren Finden von
Blättern?
Falls das Letztere der Fall ist: Klick mit der rechten Maustaste auf
die Navigationspfeile links neben den Blattregisterkarten.
--
In der Hoffnung geholfen zu haben, verbleibe ich mit einem leisen
Servus aus Wien,
-Robert Gelbmann-
---
The world is quiet here.
"Wolfgang Schirmer" <wolfgang....@de.bosch.com> schrieb im Newsbeitrag
news:f0nb14$61i$1...@news4.fe.internet.bosch.com...
> Hallo zusammen,
>
> ist es möglich innerhalb einer Arbeitsmappe mit ca 30 Tabellenblättern
> diese Blätter automatisch zu sortieren? Wenn ja wie?
ja wie ?, ein OP markierte seine aktuellen Tabs rot und wollte sie dann
immer links haben. Dafür hab ich mal folgendes Makro gemacht.
Sub WSColorSort()
Dim objWSi As Object
For Each objWSi In Application.Worksheets
If objWSi.Tab.ColorIndex = 3 Then objWSi.Move Before:=Sheets(1)
Next
End Sub
wenn du es Alphabetisch brauchst könnte man es sortieren. Aber um nicht
alles neu zu erfinden: Am 3.10.06 hat Eike Bimczok hier in der NG etwas
schönes dafür gemacht. Siehe mal unter Betreff "Alphabetisches Ordnen von
Blättern in Mappen"
--
mfG
Wolfgang Habernoll
[ Win XP Home SP-2 , XL2002 ]
"Wolfgang Habernoll" schrieb:
> Hallo Wolfgang
>
> > ist es möglich innerhalb einer Arbeitsmappe mit ca 30
Tabellenblättern
> > diese Blätter automatisch zu sortieren? Wenn ja wie?
>
> ja wie ?, ein OP markierte seine aktuellen Tabs rot und wollte sie
dann
> immer links haben. Dafür hab ich mal folgendes Makro gemacht.
>
> Sub WSColorSort()
> Dim objWSi As Object
> For Each objWSi In Application.Worksheets
> If objWSi.Tab.ColorIndex = 3 Then objWSi.Move Before:=Sheets(1)
> Next
> End Sub
>
> wenn du es Alphabetisch brauchst könnte man es sortieren. Aber um
nicht
> alles neu zu erfinden: Am 3.10.06 hat Eike Bimczok hier in der NG
etwas
> schönes dafür gemacht. Siehe mal unter Betreff "Alphabetisches
Ordnen von
> Blättern in Mappen"
Vielen Dank erst einmal für Deine Antwort. Ja es geht hier tatsächlich
um ein alphabetisches Ordnen. Leider habe ich hier keinen Zugang zum
Internet sondern nur zur Newsgroup und da kann ich nicht soweit zurück
suchen. Kann mir da eventuell jemand weiterhelfen? (a littel bit
kodschnipsel? ;-)
> --
> mfG
> Wolfgang Habernoll
>
> [ Win XP Home SP-2 , XL2002 ]
>
mfG Wolfgang Schirmer
"Wolfgang Schirmer" <wolfgang....@de.bosch.com> schrieb im Newsbeitrag
news:f0pehr$sej$1...@news4.fe.internet.bosch.com...
> Moin Wolfgang,
>
> Vielen Dank erst einmal für Deine Antwort. Ja es geht hier tatsächlich
> um ein alphabetisches Ordnen. Leider habe ich hier keinen Zugang zum
> Internet sondern nur zur Newsgroup und da kann ich nicht soweit zurück
> suchen. Kann mir da eventuell jemand weiterhelfen? (a littel bit
> kodschnipsel? ;-)
nix kodschnipsel, dann alles. Ich hoffe damit vertsosse ich nicht gegen
irgenetwas. Aber es geht ja klar hervor das es nicht von mir ist.
Aus NG vom 3.10.06
Sub sortSheets()
'10-2006
'E.Bimczok
'http://www.profi-excel.de
Dim names() As String
Dim k As Long
ReDim names(1 To ActiveWorkbook.Worksheets.Count)
k = 1
For Each a In ActiveWorkbook.Worksheets
names(k) = a.Name
k = k + 1
Next a
Call BubbleSort(names)
For k = LBound(names) + 1 To UBound(names)
Worksheets(names(k)).Move _
after:=Worksheets(names(k - 1))
Next k
End Sub
Sub BubbleSort(ByRef sArray As Variant)
'from:
http://www.kurt-aus-kienitz.de/knowhow/access/Beispiele/Module/ArraySortieren.html
'
' BubbleSort()
'
' Sortieren eines Arrays mit dem BubbleSort-Algorithmus
'
' IN: sArray das zu sortierende Array
'
Dim j As Long ' Zähler
Dim i As Long ' noch ein Zähler
Dim vDummy As Variant ' Dummy für Dreiecks-Tausch
'
' Schleife über alle Elemente des Arrays
'
For j = UBound(sArray) - 1 To LBound(sArray) Step -1
'
' Schleife vom Anfang des Arrays bis zum (n - j)'ten
' Element des Arrays
'
For i = LBound(sArray) To j
'
' Prüfen, ob der Nachfolger kleiner als das
' aktuelle Element ist
'
If sArray(i) > sArray(i + 1) Then
'
' Werte der Elemente vertauschen
'
vDummy = sArray(i)
sArray(i) = sArray(i + 1)
sArray(i + 1) = vDummy
End If
Next i
Next j
End Sub
"Wolfgang Schirmer" <wolfgang....@de.bosch.com> schrieb im Newsbeitrag
news:f0pehr$sej$1...@news4.fe.internet.bosch.com...
> Moin Wolfgang,
>
> Vielen Dank erst einmal für Deine Antwort. Ja es geht hier tatsächlich
> um ein alphabetisches Ordnen. Leider habe ich hier keinen Zugang zum
> Internet sondern nur zur Newsgroup und da kann ich nicht soweit zurück
> suchen. Kann mir da eventuell jemand weiterhelfen? (a littel bit
> kodschnipsel? ;-)
nix kodschnipsel, dann alles. Ich hoffe damit verstoße ich nicht gegen
irgendein Gesetz. Aber es geht ja klar hervor das es nicht von mir ist.
Aus NG vom 3.10.06
Call BubbleSort(names)
vielen Dank für Deine schnelle Hilfe. Werde es gleich mal probieren und
melde mich nochmal.
"Wolfgang Habernoll" schrieb:
> Hallo
mfG Wolfgang (Entschuldigung für das Teil-TOFU)
Sub BlätterSortieren()
Dim intI As Integer, intJ As Integer
For intI = 1 To Sheets.Count
For intJ = 1 To Sheets.Count - 1
If Val(Sheets(intJ).Name) < Val(Sheets(intJ + 1).Name) Then
Sheets(intJ).Move after:=Sheets(intJ + 1)
End If
Next
Next
End Sub
Mit freundlichem Gruß aus der Rattenfängerstadt Hameln
Frank Arendt-Theilen
--
(ehem. MVP für Excel)
Website: www.xl-faq.de
auch Dir erst einmal recht vielen Dank für Deine Hilfe.
Frank Arendt-Theilen schrieb:
> Hallo Wolfgang,
> folgende VBA-Prozedur von Philipp v. Wartburg
>
> Sub BlätterSortieren()
> Dim intI As Integer, intJ As Integer
> For intI = 1 To Sheets.Count
> For intJ = 1 To Sheets.Count - 1
> If Val(Sheets(intJ).Name) < Val(Sheets(intJ + 1).Name) Then
> Sheets(intJ).Move after:=Sheets(intJ + 1)
> End If
> Next
> Next
> End Sub
Die VBA Prozedur funktioniert einwandfrei, sofern die Tabellenblätter
numeriert sind bzw. zumindest eine Zahl vorangestellt ist. Danke
trotzdem dafür. Ich kann sie aber bei mir nicht anwenden, weil (und Du
ahnst es sicher schon) meine Tabellenblätter keine Numerierung sondern
einen Namen haben. Wolfgang Habernoll sein gepostetes Beispiel ist
genau richtig.
>
>
> Mit freundlichem Gruß aus der Rattenfängerstadt Hameln
> Frank Arendt-Theilen
>
> --
> (ehem. MVP für Excel)
> Website: www.xl-faq.de
mfG Wolfgang Schirmer
[alles mal gesnippt]
Danke nochmal für Deine Hilfe. Es war genau das richtige was ich
gesucht habe. Frank sein Beispiel ist auch sehr interessant aber nur
auf Blattnamen mit einer Zahl vorangestellt anwendbar.
mfG Wolfgang
<Frank Arendt-Theilen> schrieb im Newsbeitrag
news:t6q033tml8u8vtos4...@4ax.com...
nun wollte ich endlich mal den "BubbleSort" begreifen, da macht es einer
noch kürzer :-) .Es wird zwar nur numerisch absteigend sortiert, aber das
kann man ja schnell durch Anderung in einer Zeile anpassen.
' Original: nur numerische nach links und absteigend
'If Val(Sheets(intJ).Name) < Val(Sheets(intJ + 1).Name) Then
' alphanumerisch von links absteigend
'If Sheets(intJ).Name < Sheets(intJ + 1).Name Then
' alphanumerisch von links aufsteigend
'If Sheets(intJ).Name > Sheets(intJ + 1).Name Then
Danke für den Tip
"Wolfgang Schirmer" <wolfgang....@de.bosch.com> schrieb im Newsbeitrag
news:f0pr67$9v2$1...@news4.fe.internet.bosch.com...
schön das es klappt und danke fürs Feedback. Übrigens: Frank sein Beispiel
ist wesentlich kürzer und klappt mit einer kleiner Anpassung auch für dich.
Siehe dazu meine Antwort an Frank.
"Wolfgang Habernoll" schrieb:
[snip]
>
> schön das es klappt und danke fürs Feedback. Übrigens: Frank sein
Beispiel
> ist wesentlich kürzer und klappt mit einer kleiner Anpassung auch für
dich.
> Siehe dazu meine Antwort an Frank.
habe ich schon entdeckt. Dass es letztendlich noch einfacher geht hätte
ich garnicht gedacht. Jetzt tut es mir fast leid, dass ich da doch
lieber die andere (weil kürzer) Fassung verwende. Trotzdem nochmal
vielen Dank an Beide.
>
> --
> mfG
> Wolfgang Habernoll
>
> [ Win XP Home SP-2 , XL2002 ]
>
mfG Wolfgang
absteigende Reihenfolge:
Sub BlätterSortieren()
Dim intI As Integer, intJ As Integer
For intI = 1 To Sheets.Count
For intJ = 1 To Sheets.Count - 1
If UCase(Sheets(intJ).Name) < UCase(Sheets(intJ + 1).Name) Then
Sheets(intJ).Move after:=Sheets(intJ + 1)
End If
Next
Next
End Sub
Möchtst Du es aufsteigend sortiert haben, drehe das < - Zeichen
einfach um.
<Frank Arendt-Theilen> schrieb:
> Hallo Wolfgang,
> ok, ok, dann also alphanumerisch
>
> absteigende Reihenfolge:
> Sub BlätterSortieren()
> Dim intI As Integer, intJ As Integer
> For intI = 1 To Sheets.Count
> For intJ = 1 To Sheets.Count - 1
> If UCase(Sheets(intJ).Name) < UCase(Sheets(intJ + 1).Name) Then
> Sheets(intJ).Move after:=Sheets(intJ + 1)
> End If
> Next
> Next
> End Sub
>
> Möchtst Du es aufsteigend sortiert haben, drehe das < - Zeichen
> einfach um.
Vielen Dank nochmal. Funktoniert bestens :-)
>
>
> Mit freundlichem Gruß aus der Rattenfängerstadt Hameln
> Frank Arendt-Theilen
>
> --
> (ehem. MVP für Excel)
> Website: www.xl-faq.de
mfG aus Thüringen dem Grünen Herz Deutschlands ;-)
Wolfgang