Ich muss meine Blätter in einer bestimmten Reihenfolge neu anordnen. Wenn noch welche übrig sind, tun Sie dies alphabetisch. Ich habe das Makro unten, um sie alphabetisch neu zu ordnen.
Wenn ich die Blätter "METALS", "SVOC", "GENCHEM" usw. habe, möchte ich, dass diese immer in alphabetischer Reihenfolge vorliegen. Danach sollten alle anderen Blätter "Apple", "Zebra", "Lion" folgen alphabetischer Reihenfolge.
Ich habe diesen Code ausprobiert, aber nicht geklappt
Sheets("GENCHEM").Move Before:=Sheets(1)
Sheets("METALS").Move Before:=Sheets(2)
Sheets("PCBS").Move Before:=Sheets(3)
Sheets("OC_PEST").Move Before:=Sheets(4)
Sheets("SVOC").Move Before:=Sheets(5)
Sheets("VOC").Move Before:=Sheets(6)
'------- Mein Arbeitsmakro unten ----
Option Explicit
Sub reordersheets()
'---Reorders the Sheets---
Dim N As Integer
Dim M As Integer
Dim FirstWSToSort As Integer
Dim LastWSToSort As Integer
Dim SortDescending As Boolean
SortDescending = False
If ActiveWindow.SelectedSheets.Count = 1 Then
FirstWSToSort = 1
LastWSToSort = Worksheets.Count
Else
With ActiveWindow.SelectedSheets
For N = 2 To .Count
If .Item(N - 1).Index <> .Item(N).Index - 1 Then
MsgBox "You cannot sort non-adjacent sheets"
Exit Sub
End If
Next N
FirstWSToSort = .Item(1).Index
LastWSToSort = .Item(.Count).Index
End With
End If
For M = FirstWSToSort To LastWSToSort
For N = M To LastWSToSort
If SortDescending = True Then
If UCase(Worksheets(N).Name) > UCase(Worksheets(M).Name) Then
Worksheets(N).Move Before:=Worksheets(M)
End If
Else
If UCase(Worksheets(N).Name) < UCase(Worksheets(M).Name) Then
Worksheets(N).Move Before:=Worksheets(M)
End If
End If
Next N
Next M
End Sub
microsoft-excel
vba
macros
sorting
Jburkley
quelle
quelle
PCBS
vorOC_PEST
- das ist nicht alphabetisch.Antworten:
Ich habe den Code irgendwie neu geschrieben. Das funktioniert bei mir. Beachten Sie, dass ich die speziellen Blätter, die Sie zu Beginn benötigen, mithilfe eines Arrays "brutal erzwinge".
quelle
Ich habe den folgenden Code verwendet. '' Sub SortWorksheetsTabs () Application.ScreenUpdating = False Dim ShCount As Integer, i As Integer, j As Integer ShCount = Sheets.Count Für i = 1 bis ShCount - 1 Für j = i + 1 To ShCount Wenn UCase (Sheets (j) .Name) & lt; UCase (Sheets (i) .Name) Dann Blätter (j). Vorher bewegen: = Blätter (i) End If Weiter j Weiter i Application.ScreenUpdating = True End Sub ''
quelle