Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1164to1168
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
Inhaltsverzeichnis

Register einer bestimmten Farbe sortieren

Register einer bestimmten Farbe sortieren
ajbl
Hallo
ich habe einen kleinen Makro um Arbeitsblätter einer besitmmten Farbe aus- / und einzublenden. Ich möchte nach dem die schwarzen Arbeitsblätter (ColorIndex = 1) eingeblendet wurden diese sortieren und zwar nur diese (die schwarzen).

Sub ArbeitsblätterEinblenden()
Dim wsTabelle As Worksheet
For Each wsTabelle In Worksheets
If wsTabelle.Tab.ColorIndex = 1 Then
wsTabelle.Visible = True
End If
Next wsTabelle
End Sub

Danke

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

Betreff
Benutzer
Anzeige
AW: Register einer bestimmten Farbe sortieren
26.06.2010 15:32:48
Tino
Hallo,
kannst mal diesen Code testen.
kommt als Code in Modul1
Option Explicit 
 
Sub SortTabelle() 
Dim meAr, i As Integer 
      
FindTabsColorIndex 1, meAr 
 
If IsArray(meAr) Then 
    With ThisWorkbook 
        QuickSort meAr, Lbound(meAr), Ubound(meAr) 
          
        Application.ScreenUpdating = False 
        For i = Ubound(meAr) To Lbound(meAr) + 1 Step -1 
            .Sheets(meAr(i)).Move After:=.Sheets(meAr(0)) 
        Next i 
        Application.ScreenUpdating = True 
    End With 
End If 
 
 
 
End Sub 
 
Sub FindTabsColorIndex(iColorIndex As Integer, meAr) 
Dim i As Integer, ii As Integer 
Dim tmpAr() 
With ThisWorkbook 
    For i = 1 To ThisWorkbook.Sheets.Count 
        If Sheets(i).Tab.ColorIndex = 1 Then 
            Redim Preserve tmpAr(ii) 
            tmpAr(ii) = .Sheets(i).Name 
            ii = ii + 1 
        End If 
    Next i 
End With 
If ii > 0 Then meAr = tmpAr 
End Sub 
kommt als Code in Modul2
Option Explicit 
  
Sub QuickSort(ByRef sArray As Variant, ByVal MinElem As Long, MaxElem As Long) 
Dim Mitte As Long 
Dim vDummy As Variant 
Dim i As Long, j As Long 
  
    If MinElem > MaxElem Then 
  
        Exit Sub 
    End If 
  
    Mitte = (MinElem + MaxElem) \ 2 
  
    i = MinElem 
    j = MaxElem 
    Do 
  
        Do While sArray(i) < sArray(Mitte) 
            i = i + 1 
        Loop 
  
        Do While sArray(j) > sArray(Mitte) 
            j = j - 1 
        Loop 
   
        If i <= j Then 
  
            vDummy = sArray(j) 
            sArray(j) = sArray(i) 
            sArray(i) = vDummy 
  
            i = i + 1 
            j = j - 1 
        End If 
   
    Loop Until i > j 
    QuickSort sArray, MinElem, j 
    QuickSort sArray, i, MaxElem 
End Sub 
Gruß Tino
Anzeige
AW: Register einer bestimmten Farbe sortieren
26.06.2010 18:29:36
ajbl
danke für deine Hilfe, ich bin aber leider kein VBA-Spezi. Mit Modul1 und Modul2, was ist damit gemeint?
AB
..wo steht denn dein code ?
26.06.2010 18:49:48
robert

Sub ArbeitsblätterEinblenden()
Dim wsTabelle As Worksheet
For Each wsTabelle In Worksheets
If wsTabelle.Tab.ColorIndex = 1 Then
wsTabelle.Visible = True
End If
Next wsTabelle
End Sub

der Name des Moduls ist egal
26.06.2010 19:07:50
Tino
Hallo,
, steht bei mir nur weil ich den Code in diesen erstellt habe.
Lege den Code in ein Modul Deiner Wahl und rufen die Prozedur nach dem
einblenden der Tabellen mit Call SortTabelle auf.
Hast Du kein Modul, mach im VBA ein rechtsklick mit der Maus in Deinem Projekt
(links in der Explorer- Leiste) und wähle Einfügen Modul.
Müsste dann so in etwa aussehen
Sub ArbeitsblätterEinblenden()
Dim wsTabelle As Worksheet
For Each wsTabelle In Worksheets
If wsTabelle.Tab.ColorIndex = 1 Then
wsTabelle.Visible = True
End If
Next wsTabelle
Call SortTabelle
End Sub
Gruß Tino
Anzeige
AW: der Name des Moduls ist egal
26.06.2010 19:34:02
ajbl
danke Tino es funzt tadellos!
Kurze Frage noch, ich habe deine Codes im anschluss zu meinen Makros hinzugefügt, wobei ich die jeweilige 1. Zeile deiner Codes ausgelassen habe (Option Explicit) und es funktioniert. Welche Bedeutung hat diese Option Explicit?
AB
Option Explicit find ich wichtig!
26.06.2010 19:51:38
Tino
Hallo,
dies im Kopf bedeutet, dass eine Variablen Deklarierung zwingenst erforderlich ist.
Im VBA unter Extras Optionen kann man dies aktiviere,
dann wird diese Zeile beim erstellen automatisch hinzugefügt.
Persönlich mach ich nur mit diesem Option Explicit, damit ich keine Variable vergesse.
Schau auch mal hier, sehr schöne Erklärung.
http://www.online-excel.de/excel/singsel_vba.php?f=4
Gruß Tino
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige