Sortierung von Sheets nach Zellinhalten???
04.01.2024 15:55:57
andittel
ich arbeite grade an einer Excel-Datei, in der im Sheet1 mehrere Werte in den Spalten A bis D hinterlegt sind (hier sortiert nach den Zellwerten in Spalte D). Zusätzlich sind in der Spalte C Hyperlinks, die auf weitere Sheets verweisen:
_______ | A (DISCH) | B_____ | C________________ | D
Zeile 1 | 74123387 | Typ A | Name4 (mit Link) | Ort1
Zeile 2 | 04125466 | Typ A | Name2 (mit Link) | Ort2
Zeile 3 | 88943126 | Typ C | Name3 (mit Link) | Ort3
Zeile 4 | 22432622 | Typ B | Name1 (mit Link) | Ort4
Die Links verweisen auf Sheet6 (Blattname "74123387"), Sheet7 (BlattName "04125466"), Sheet8 (BlattName "88943126") und Sheet9 (BlattName "22432622"), so dass ich beim Anklicken des Links das jeweilige Sheet springen kann (dieses also anzeigen lassen kann).
Wenn ich jetzt die Werte in Sheet1 zum Beispiel nach Spalte A umsortiere, stimmen die Links nicht mehr: ich lande auf den falschen Sheets. Nun nehme ich an, dass ich mit dem Sortieren nach Spalte A auch die Reihenfolge der Sheets 6 bis 9 ändern muss, richtig? Zum Sortieren habe ich nun folgenden Code in einem Modul ausprobiert. der aber nicht funktioniert (er sortiert zwar die Sheets, aber eben verkehrt):
Sub DatenblattSortierung()
'##########################
'## DatenblattSortierung ##
'##########################
Dim ArrayAbfrage As Integer
Dim ArrayDISCH()
Dim ArrayLänge As Integer
Dim DISCHEinlesen As Integer
Dim SortierZähler As Integer
Erase ArrayDISCH()
'## Array für DISCH einlesen ##
ArrayLänge = WorksheetFunction.CountA(Worksheets(1).Columns(1)) - 2
ReDim ArrayDISCH(ArrayLänge)
For DISCHEinlesen = 0 To ArrayLänge 'Step -1
ArrayDISCH(DISCHEinlesen) = ThisWorkbook.Sheets(1).Cells(DISCHEinlesen + 2, 1).Value
Next DISCHEinlesen
For ArrayAbfrage = 0 To ArrayLänge
For SortierZähler = ArrayLänge + 6 To 6 Step -1
If ArrayDISCH(ArrayAbfrage) = ThisWorkbook.Sheets(SortierZähler).Name Then
ThisWorkbook.Sheets(SortierZähler).Move After:=ThisWorkbook.Sheets(5)
End If
Next SortierZähler
Next ArrayAbfrage
End Sub
Wahrscheinlich programmiertechnisch ziemlicher Quark, das ist mir schon klar - aber kann mir hier jemand bitte weiterhelfen?
Viele Grüße & Dank für eure Mühe
Andreas