Ich habe eine Excel-Datei mit mehreren Arbeitsblättern.
Hierfür habe ich ein Makro erstellt, das in jedem Arbeitsblatt, in einem bestimmten Bereicht, eine automatische Sortierung vornimmt (nach Datum), wenn man die Datei öffnet.
Meine Frage:
Das 1. Tabellenblatt der Datei soll von dem Makro ausgeschlossen sein. Es soll hier nichts sortiert werden.
Wie kann man sein Makro umschreiben bzw. wo muss man was bei den Einstellungen ändern, damit im Tabellenblatt 1 nichts passiert?
Das Makro sieht so aus:
Sub auto_open()
’
’ Sortieren Makro
’ Makro am 18.10.2011 von ms aufgezeichnet
’
’ Tastenkombination: Strg+s
’
Range(„A8:J271“).Select
Selection.Sort Key1:=Range(„B8“), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range(„B9“).Select
End Sub
Ich habe eine Excel-Datei mit mehreren Arbeitsblättern.
Hierfür habe ich ein Makro erstellt, das in jedem
Arbeitsblatt, in einem bestimmten Bereicht, eine automatische
Sortierung vornimmt (nach Datum), wenn man die Datei öffnet.
So wie der Code im Moment eingebaut ist, wird immer das Tabellenblatt das momentan aktiv ist beim öffnen sortiert.
Es kommt also darauf an, welches das aktive Tabellenblatt beim letzten Speichern war.
In deinem Falle müsstest Du wohl die einzelnen Blätter durchlaufen und sortieren lassen - dann kannst Du das erste aussen vor lassen.
Danke für die schnelle Antwort. Funktioniert einwandfrei.
Jetzt hat sich aber gleich eine neue Frage aufgetan, wie kann ich dass Makro jetzt noch einstellen, dass alle Arbeitsblätter beim öffnen sortiert werden?
dann ersetze mal dein gesamtes Makro durch das nachfolgende:
Sub auto_open()
For i = 1 To Worksheets.Count
Worksheets(i).Select
If ActiveSheet.Name „Tabelle1“ Then
Range(„A8:J271“).Select
Selection.Sort Key1:=Range(„B8“), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range(„B9“).Select
End If
Next i
End Sub
Sub workbook_open()
’
’ Sortieren Makro
’ Makro am 18.10.2011 von ms aufgezeichnet
’
’ Tastenkombination: Strg+s
’
For Each tabelle In Worksheets
If tabelle.Name „Tabelle1“ Then
Range(„A8:J271“).Select
Selection.Sort Key1:=Range(„B8“), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range(„B9“).Select
End If
Next tabelle
End Sub
Sub auto_open()
’
’ Sortieren Makro
’ Makro am 18.10.2011 von ms aufgezeichnet
’
’ Tastenkombination: Strg+s
’
If ActiveSheet.Name = „Tabelle1“ Then
Exit Sub
End If
Range(„A1:J271“).Select
Selection.Sort Key1:=Range(„B8“), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range(„B9“).Select
End Sub
Hallo Miche111,
du sortierst nach Spalte-B8 in jedem Arbeitsblatt, ja?
Wenn dem so ist, erstelle ein Modul und schreibe dein Script dort in eine Subroutine „Sort“.
Für deine Tabellenblätter 2 bis xxx erstelle auf deinem Tabellenblatt-1 einen Button und benenne ihn z.B.Sortiere.
Danach einen Doppelklick drauf und folgenden Code eingeben:
Private Sub CommandButton1_Click()
Sheets(„Tabelle2“).Activate: Sort
Sheets(„Tabelle3“).Activate: Sort
’ usw.
End Sub
hier mein Lösungsvorschlag (ich habe Ihr Macro etwas verändern müssen):
Sub auto_open()
Dim arbeitsb As Integer
Dim i As Integer
'Anzahl Arbeitsblätter ermitteln
arbeitsb = Worksheets.Count
'Schleife starten um alle Arbeitsblätter ab dem 2. zu bearbeiten
For i = 2 To arbeitsb
'With verwenden um Programm übersichtlicher zu machen
With ActiveWorkbook.Worksheets(i)
'mit Arbeitsblatt 2 Sortierung beginnen
Worksheets(i).Activate
’ Ihr ursprüngliches Programm mit kleinen Änderungen
.Range(„A8:J17“).Select
Selection.Sort Key1:=.Range(„B8“), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
.Range(„B9“).Select
'Withanweisung aufheben
End With
'auf zum nächsten Arbeitsblatt
Next i
End Sub
Sub auto_open()
’
’ Sortieren Makro
’ Makro am 18.10.2011 von ms aufgezeichnet
’
’ Tastenkombination: Strg+s
’
if …
dein code
end if
End Sub
Gruß
Fred
Das 1. Tabellenblatt der Datei soll von dem Makro
ausgeschlossen sein. Es soll hier nichts sortiert werden.
Wie kann man sein Makro umschreiben bzw. wo muss man was bei
den Einstellungen ändern, damit im Tabellenblatt 1 nichts
passiert?
Das Makro sieht so aus:
Sub auto_open()
’
’ Sortieren Makro
’ Makro am 18.10.2011 von ms aufgezeichnet
’
’ Tastenkombination: Strg+s
’
Range(„A8:J271“).Select
Selection.Sort Key1:=Range(„B8“), Order1:=xlAscending,
Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom,
_
DataOption1:=xlSortNormal
Range(„B9“).Select
End Sub
das Makro, so wie du es in der Frage angegeben hast sortiert nur im Blatt, dass beim Öffnen aktiv ist, nicht in allen blättern.
Mit den nachfolgenden Anpassungen/Ergänzungen wird in allen Blättern außer dem 1. sortiert. Auf die Select-Anweisungen wird dabei verzichtet.
Gruß
Franz
Sub auto\_open()
'
' Sortieren Makro
' Makro am 18.10.2011 von ms aufgezeichnet
'
' Tastenkombination: Strg+s
'
Dim objWks As Worksheet
For Each objWks In ThisWorkbook.Worksheets
With objWks
Select Case .Index
Case 1 '
'nicht sortieren
Case Else
.Range("A8:J271").Sort Key1:=.Range("B8"), Order1:=xlAscending, Header:=xlGuess, \_
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, \_
DataOption1:=xlSortNormal
End Select
End With
Next objWks
End Sub