Sheets sortieren - nur eingeblendete

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
ListBox MsgBox
Bild

Betrifft: Sheets sortieren - nur eingeblendete
von: Erich M.
Geschrieben am: 17.04.2005 08:48:18
Hallo EXCEL-Freunde,
ich möchte Tabellenblätter sortieren - allerdings nur die eingeblendeten. Aus
den Foren habe ich nachstehende Codes die cih nicht anpassen kann:
Option Explicit

'http://www.herber.de/forum/archiv/48to52/t48769.htm
Sub SortWorksheets()
Dim Cnt%, n%, m%
Dim WS As Worksheet
Set WS = ActiveSheet
''''''''##### nur eingeblendete Sheets?
Cnt = ActiveWorkbook.Worksheets.Count
For m = 1 To Cnt
For n = m To Cnt
If UCase(Worksheets(n).Name) < UCase(Worksheets(m).Name) Then ' ignoriert Groß- /Kleinbuchstaben
' If Worksheets(N).Name < Worksheets(M).Name Then
Worksheets(n).Move Before:=Worksheets(m)
End If
Next n
Next m
End Sub
'http://www.herber.de/forum/archiv/248to252/t251650.htm
Sub SheetsSortieren()
Dim Mldg As Byte
Mldg = MsgBox("sortiert die Sheets in diesem Workbook alphabetisch. Weiter?", vbInformation + vbOKCancel, "")
If Mldg = vbCancel Then Exit Sub
''''#### nur eingeblendete Sheets?
'If Sheets.Visible = True Then
AnzahlRegister = Sheets.Count '= Sheets.Visible = True
'End If
For i = 1 To AnzahlRegister - 1
x = i
For Zähler = i + 1 To AnzahlRegister
If UCase$(Sheets(Zähler).Name) < UCase$(Sheets(x).Name) Then
x = Zähler
End If
Next Zähler
If x > i Then Sheets(x).Move Sheets(i)
Next i
End Sub
Public Sub sortieren_Tabellen()
'http://www.excel-center.de/foren/read.php?2,651,652#msg-652
'von Nepumuk
Dim intIndex1 As Integer, intIndex2 As Integer
Application.ScreenUpdating = False
''''#### nur eingeblendete Sheets?
For intIndex1 = 1 To Worksheets.Count - 1
For intIndex2 = intIndex1 + 1 To Worksheets.Count
If LCase$(Worksheets(intIndex2).Name) < LCase$(Worksheets(intIndex1).Name) Then Worksheets(intIndex2).Move Before:=Sheets(intIndex1)
Next
Next
Application.ScreenUpdating = True
End Sub

Code eingefügt mit: Excel Code Jeanie
Ein geänderter Code reicht.
Besten Dank für eine Hilfe!

mfg
Erich
EXCEL-Shareware und Freeware: http://www.toolex.de
EXCEL und Lottogewinne machen glücklich: http://48678.rapidforum.com

Bild

Betrifft: AW: Sheets sortieren - nur eingeblendete
von: geri
Geschrieben am: 17.04.2005 09:04:19
Hallo Erich
das 3te habe ich getestet es funktioniert doch einwandfrei, füge CODE
in ein Modul ein.
gruss geri
Bild

Betrifft: AW: Sheets sortieren - nur eingeblendete
von: Erich M.
Geschrieben am: 17.04.2005 09:12:24
Hallo geri,
ich erhalte folgende Fehlermeldung:
Laufzeitfehler 1004
Die Move-Methode des Worksheet-Objektes konnte nicht ausgeführt werden.
markiert wird:
Worksheets(intIndex2).Move Before:=Sheets(intIndex1)
Noch eine Idee?
Besten Dank!
mfg
Erich
EXCEL-Shareware und Freeware: http://www.toolex.de
EXCEL und Lottogewinne machen glücklich: http://48678.rapidforum.com
Bild

Betrifft: AW: Sheets sortieren - nur eingeblendete
von: Xelleron (Dennis)
Geschrieben am: 17.04.2005 09:09:27
Hallo Erich,
würde es so machen:

Sub Arbeitsblättersortieren()
Dim iMax As Integer
Dim Ibl As Integer
Dimibl2 As Integer
Application.ScreenUpdating = False
iMax = ActiveWorkbook.Worksheets.Count
For Ibl = 1 To iMax
For ibl2 = Ibl To iMax
If UCase(Worksheets(ibl2).Name) _
<UCase(Worksheets(Ibl).Name) Then
Worksheets(ibl2).Move before:=Worksheets(Ibl)
End If
Next ibl2
Next IBl
Application.ScreenUpdating = True
End Sub

Gruß Dennis
Bild

Betrifft: AW: Sheets sortieren - nur eingeblendete
von: Erich M.
Geschrieben am: 17.04.2005 09:14:46
Hallo Dennis,
seleb Fehlermeldung wie vorhin; markiert wird:
Worksheets(ibl2).Move before:=Worksheets(Ibl)
Besten Dank nochmal!
mfg
Erich
EXCEL-Shareware und Freeware: http://www.toolex.de
EXCEL und Lottogewinne machen glücklich: http://48678.rapidforum.com
Bild

Betrifft: AW: Sheets sortieren - nur eingeblendete
von: Nepumuk
Geschrieben am: 17.04.2005 09:20:46
Hallo Erich,
heb mal den Mappenschutz auf.
Gruß
Nepumuk
Bild

Betrifft: AW: Sheets sortieren - nur eingeblendete
von: Erich M.
Geschrieben am: 17.04.2005 09:40:56
Hallo Nepumuk,
habe keinen Schutz; siehe auch Beispielmappe von Dennis, ebenfalls ohne Schutz.
Besten Dank nochmal!
mfg
Erich
EXCEL-Shareware und Freeware: http://www.toolex.de
EXCEL und Lottogewinne machen glücklich: http://48678.rapidforum.com
Bild

Betrifft: AW: Sheets sortieren - nur eingeblendete
von: Nepumuk
Geschrieben am: 17.04.2005 10:06:31
Hallo Erich,
dann so:


Sub Arbeitsblättersortieren()
    Dim iMax As Integer
    Dim Ibl As Integer
    Dim ibl2 As Integer
    Application.ScreenUpdating = False
    iMax = ActiveWorkbook.Worksheets.Count
    For Ibl = 1 To iMax
        For ibl2 = Ibl To iMax
            If Worksheets(ibl2).Visible = xlSheetVisible And _
                Worksheets(Ibl).Visible = xlSheetVisible Then
                If UCase(Worksheets(ibl2).Name) _
                    < UCase(Worksheets(Ibl).Name) Then
                    Worksheets(ibl2).Move before:=Worksheets(Ibl)
                End If
            End If
        Next ibl2
    Next Ibl
    Application.ScreenUpdating = True
End Sub


Gruß
Nepumuk
Bild

Betrifft: Danke Nepumuk - perfekt!! o.T.
von: Erich M.
Geschrieben am: 17.04.2005 10:17:29
mfg
Erich
EXCEL-Shareware und Freeware: http://www.toolex.de
EXCEL und Lottogewinne machen glücklich: http://48678.rapidforum.com
Bild

Betrifft: AW: Sheets sortieren - nur eingeblendete
von: FP
Geschrieben am: 17.04.2005 14:59:05
Hallo Nepumuk,
probier mal das mit 200 bunt durcheinandergewürfelten Blättern :-)
Option Explicit
Public Appl As Application
Public

Sub SortTabs()
  Dim wb      As Workbook
  Dim ws      As Worksheet
  Dim wsn     As Worksheet
  Dim intA    As Integer, i As Integer
  Set Appl = Application
  SetApplModeOnOff False
  Set wb = ActiveWorkbook
  intA = wb.Sheets.Count
  Set wsn = wb.Sheets.Add(After:=wb.Sheets(intA))
  With wsn
    For Each ws In wb.Sheets
      If ws.Visible = xlSheetVisible Then
        i = i + 1
        .Cells(i, 1) = ws.Name
      End If
    Next
  
    .Columns(1).Sort .Cells(1)
    For i = 1 To .Cells(65536, 1).End(xlUp).Row
      Sheets(.Cells(i, 1).Value).Move After:=Worksheets(intA + 1)
    Next
  
    .Delete
  End With
  SetApplModeOnOff
End Sub


Sub SetApplModeOnOff(Optional blnOn = True)
  With Appl
    .DisplayAlerts = blnOn
    .EnableEvents = blnOn
    .ScreenUpdating = blnOn
    .Interactive = blnOn
    .EnableCancelKey = blnOn
    If blnOn Then
      .Calculation = xlCalculationAutomatic
    Else
      .Calculation = xlCalculationManual
    End If
  End With
End Sub

Servus aus dem Salzkammergut
Franz
Bild

Betrifft: AW: Sheets sortieren - nur eingeblendete
von: Nepumuk
Geschrieben am: 17.04.2005 15:30:36
Hi Franz,
okokokok ich habs mit 20 Tabellen getestet. Da hätte das aus- und einschalten und ..... länger gedauert als das sortieren.
Aber, mein liebes Fränzchen, kannst du mir die Verwendung einer öffentlichen Objektvariablen, welche dann nur ein einziges mal angesprochen wird, und dort ohne weiteres durch die Anweisung "With Application" ersetzt werden könnte, plausibel machen?
Sonntägliche Grüße
Nepumuk
Bild

Betrifft: AW: Sheets sortieren - nur eingeblendete
von: FP
Geschrieben am: 17.04.2005 17:07:04
Hallo Nepumuk,
Für dieses Beispiel ist das vielleicht übertrieben, aber diese öffentliche Variable kann man ja in größeren Projekten auch öfter brauchen, oder etwa nicht?
Ausserdem wollte ich Dich nur fragen, was Du von meinem Code hältst.
Was mich speziell interessieren würde: gibt es eine Methode, ein Array sortieren zu lassen? Sort funktioniert ja leider nur mit Range, daher die "Krücke" eines Hilfsblattes, das hinzugefügt und wieder gelöscht werden muss, was mich eher stört...
Schönen Sonntag noch und
Servus aus dem Salzkammergut
Franz
Bild

Betrifft: AW: Sheets sortieren - nur eingeblendete
von: Nepumuk
Geschrieben am: 17.04.2005 17:48:12
Hi Franz,
eine Objektvariable lege ich an, wenn mein Objekt irgendwie so aussieht:
Workbooks("Mappe1").Worksheets("Tabelle2").Range("A1:B22")
weil das ein bisschen unhandlich ist. Aber Application?
Zum sortieren, guckst du mal hier z.B.:
https://www.herber.de/forum/messages/599921.html
Die Listbox ist, weil einspaltig, ein eindimensionales Array. Die Sortierroutine nennt sich Quicksort und ist bis ~ 20.000 Datensätzen ziemlich schnell. Wenn es mehr Daten sind, würde die Methode mit der Tabelle sicher besser abschneiden.
Gruß
Nepumuk
Bild

Betrifft: AW: Sheets sortieren - nur eingeblendete
von: Xelleron (Dennis)
Geschrieben am: 17.04.2005 09:21:53
Hallo Erich,
habe jetzt mal Bsp-Datei hochgeladen! Auf Blatt 2 habe ich nen Button mit dem Code hinterlegt, funzt wunderbar
https://www.herber.de/bbs/user/21256.xls
Gruß Dennis
Bild

Betrifft: AW: Sheets sortieren - nur eingeblendete
von: Erich M.
Geschrieben am: 17.04.2005 09:39:59
Hallo Dennis,
wenn Du eine Tabelle mit xlveryHidden ausblendest, hast Du das gleiche Problem.
mfg
Erich
EXCEL-Shareware und Freeware: http://www.toolex.de
EXCEL und Lottogewinne machen glücklich: http://48678.rapidforum.com
Bild

Betrifft: AW: Sheets sortieren - nur eingeblendete
von: andre
Geschrieben am: 17.04.2005 10:02:51
Hallo Erich,
ergänze die Bedingung um
And Worksheets(ibl2).Visible <> xlVeryHidden
Bild

Betrifft: Danke andre - geht auch! o.T.
von: Erich M.
Geschrieben am: 17.04.2005 10:19:52
mfg
Erich
EXCEL-Shareware und Freeware: http://www.toolex.de
EXCEL und Lottogewinne machen glücklich: http://48678.rapidforum.com
 Bild

Beiträge aus den Excel-Beispielen zum Thema "Sheets sortieren - nur eingeblendete"