Thema erledigt...
Problem war: Tabllen mit namen "Spur_" & irgendeiner Zahl, zu sortieren.
Bei ArrayList.Sort hat er falsch sortiert, mein Quicksort hat vorhin auch falsch sortiert.
Falls ihr also Tabellen mit nummern sortieren wollt, steht unten der Code für euch.
Die Subs spur_String_out und spur_String_in, sind dafür da den "Spur_" Teil zu entfernen, so dass man nur noch Zahlen hat.
Mit diesem Quicksort macht er es: (mit arraylist.sort nicht, bei zweistelligen zahlen prüft er bei .sort nur die erste stelle)
Problem war: Tabllen mit namen "Spur_" & irgendeiner Zahl, zu sortieren.
Bei ArrayList.Sort hat er falsch sortiert, mein Quicksort hat vorhin auch falsch sortiert.
Falls ihr also Tabellen mit nummern sortieren wollt, steht unten der Code für euch.
Die Subs spur_String_out und spur_String_in, sind dafür da den "Spur_" Teil zu entfernen, so dass man nur noch Zahlen hat.
Mit diesem Quicksort macht er es: (mit arraylist.sort nicht, bei zweistelligen zahlen prüft er bei .sort nur die erste stelle)
Visual Basic-Quellcode
- Option Explicit
- Private sheetArray() As Variant
- Sub Main_Sheetsort()
- Dim i
- Dim wb As Workbook
- Set wb = ThisWorkbook
- Call create_Sheetarray
- Call spur_String_out
- Call QuickSort_Sheets(sheetArray, LBound(sheetArray), UBound(sheetArray))
- Call spur_String_in
- For i = UBound(sheetArray) To 1 Step -1
- wb.Sheets(sheetArray(i - 1)).Move before:=wb.Sheets(1)
- Next
- End Sub
- Sub create_Sheetarray()
- Dim ws As Worksheet
- Dim wb As Workbook
- Dim i As Long
- Set wb = ThisWorkbook
- For Each ws In wb.Sheets
- If Left(ws.Name, 5) = "Spur_" Then
- ReDim Preserve sheetArray(i)
- sheetArray(i) = ws.Name
- i = i + 1
- End If
- Next ws
- End Sub
- Sub spur_String_out()
- Dim i As Long
- Dim j As Long
- For i = 0 To UBound(sheetArray)
- j = Len(sheetArray(i)) - 5
- If IsNumeric(Right(sheetArray(i), j)) Then
- sheetArray(i) = Right(sheetArray(i), j)
- End If
- Next i
- End Sub
- Sub spur_String_in()
- Dim i As Long
- For i = 0 To UBound(sheetArray)
- If IsNumeric(sheetArray(i)) Then
- sheetArray(i) = "Spur_" & sheetArray(i)
- Debug.Print sheetArray(i)
- End If
- Next i
- End Sub
- Sub QuickSort_Sheets(ByRef arrSheets() As Variant, _
- ByVal i As Long, _
- ByVal j As Long)
- Dim x As Long, y As Long
- Dim ref As Long, temp As Long
- x = i: y = j
- ref = arrSheets((x + y) / 2)
- Do
- Do While arrSheets(x) < ref
- x = x + 1
- Debug.Print "x = " & x & " ref = " & ref
- Loop
- Do While arrSheets(y) > ref
- y = y - 1
- Debug.Print "y = " & y & " ref = " & ref
- Loop
- If x <= y Then
- temp = arrSheets(x)
- arrSheets(x) = arrSheets(y)
- arrSheets(y) = temp
- x = x + 1
- y = y - 1
- End If
- Loop Until (x > y)
- If i < y Then Call QuickSort_Sheets(arrSheets, i, y)
- If x < j Then Call QuickSort_Sheets(arrSheets, x, j)
- End Sub
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Petersilie“ ()