Hallo!
Ich habe diverse Arbeitsblätter
Nun möchte ich dass nur die Daten in dem Tabellenblatt Übersicht sortiert werden.
Hiermit geht es ja:
Code:
Sub Sortall()
'
' Sort Makro
' Makro am 25.04.2005 von Klaus Kort aufgezeichnet
'
'
Rows("4:65536").Select
Selection.Sort Key1:=Range("D4"), Order1:=xlDescending, Key2:=Range("C4") _
, Order2:=xlAscending, Key3:=Range("E4"), Order3:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("A4").Select
End Sub
Mein Problem ist dass es dann den Filter in den nächsten Arbeitsblättern auch verändert.
so muß ich dann immer im Dropdown die jeweilige Abteilung bzw. Arbeiter neu abklicken damit nur dies in der Tabelle angezeigt wird.
Wie kann ich dies ändern?
Hallöchen,
die Sortierung wirkt in dem Blatt, welches beim Aufruf des Makros aktiv ist.
Auf verschiedenen Blättern kann es nur wirken, wenn Du selbige aktivierst und das Makro auf dem jeweils aktivierten Blatt nochmals ausführst.
Eine gezielte Sortierung kannst Du z.B. dadurch erreichen, indem Du bei den Bereichsangaben das entsprechende Blatt zuweist, z.B.
Code:
With Sheets("Übersicht")
.Rows("4:65536").Sort Key1:=.Range("D4"), Order1:=xlDescending, Key2:=.Range("C4") _
, Order2:=xlAscending, Key3:=.Range("E4"), Order3:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End With
Beachte im Code die Punkte vor Rows und jeder Range-Angabe. Ein Select auf einem nicht aktiven Blatt ist nicht direkt möglich.
Nur mal zur Erklärung:
Code:
With Sheets("Übersicht")
.Rows("4:65536").Sort Key1:=.Range("D4"), Order1:=xlDescending, Key2:=.Range("C4") _
, Order2:=xlAscending, Key3:=.Range("E4"), Order3:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End With
Meine Spalte E4 hat die Formatierung -Datum-
Wie kann ich dann die Liste nach dem Datum sortieren aber mit der Bedingung dass die erledigten Aufträge (durchgestrichen, Bedingte Formatierung) nicht berücksichtigt werden?
Hallöchen,
blende die nicht zu berücksichtigenden Zeilen zuvor aus, z.B. mit dem Autofilter.
(16.03.2016, 21:57)schauan schrieb: [ -> ]Ein Select auf einem nicht aktiven Blatt ist nicht direkt möglich.
Also kann ich dies
nicht machen, wenn ich den Button auf dem Blatt 1 habe:
Code:
With Sheets("Blatt1")
.Rows("4:65536").Sort Key1:=.Range("D4"), order1:=xlDescending, Key2:=.Range("C4") _
, Order2:=xlAscending, Key3:=.Range("E4"), Order3:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End With
With Sheets("Blatt2")
.Rows("4:65536").Sort Key1:=.Range("C4"), order1:=xlDescending, Key2:=.Range("D4") _
, Order2:=xlAscending, Key3:=.Range("E4"), Order3:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End With
End Sub
und wenn auf den Blatt 2 ein Autofilter ist ,dann zusätzlich nach dem Autofilter filtern:
Code:
Sub Filtersetzen()
Dim ws As Worksheet
For Each ws In Worksheets
If ws.AutoFilterMode Then
If ws.FilterMode Then ws.ShowAllData
Else
ws.UsedRange.AutoFilter
End If
ws.UsedRange.AutoFilter Field:=12, Criteria1:=xxxx
ws.Rows(1).Hidden = True
Next
End Sub
ok habe diesen Code gefunden bei:
http://www.supportnet.de/stat/2004/2/id166560.asp
Code:
Sub FilterInDreiBlättern()
Sheets("Elektro").Select
Selection.AutoFilter Field:=14, Criteria1:=Elektro
Sheets("Mechanik").Select
Selection.AutoFilter Field:=14, Criteria1:=Mechanik
Sheets("ElektroMechanik").Select
Selection.AutoFilter Field:=14, Criteria1:=Elektro/Mechanik
End Sub
Geht aber nichts wenn ich den Code in "Diese Arbeitsmappe" kopiere.
Wenn ich den dann mit meinem Button
Neu sortieren verknüpfe ,kommt:
Code:
Laufzeitfehler 1004
Die Autofiltermethode des Range -Objektes konnte nicht ausgeführt werden
--> Selection.AutoFilter Field:=14, Criteria1:=Elektro
Ich möchte aber im Blatt Elektro im Feld 14 (N) nach Elektro filtern
Im Blatt Mechanik --Feld 14 nach Mechanik
usw.