Power-Kiddy 10 Geschrieben 10. Oktober 2009 Melden Teilen Geschrieben 10. Oktober 2009 (bearbeitet) Hallo! Ich überlege gerade wie ich es schaffe mir eine Routine zu basteln mit dem ich ein zweidimensionales Array sortiere und wo ich die Spalte (den Wert der zweiten Dimension) der Routine übergeben. Die Routine sollte etwa soaussehen ' Aufbau vom Array 'Verzeichnis1 DateCreated Size 'Verzeichnis2 DateCreated Size Sub SortArray(byRef arrArray, byVal intSpalte, byVal bolDirection) ' Direction = aufsteigend/absteigend .. End Sub Mein Problem ist folgendes: Im Code muss ich mich auf die Spalte beziehen nach der sortiert werden soll. Das ist gleichzeigt der Inhalt von der zweiten Dimension. Wie kann ich im Code die Spalt Adressieren? Diese wird ja erst zur Laufzeit übergebn! Zudem möche ich das universell gestalten, mit einer beliebigen Anzahl in der erste Dimension und auch in der zweiten Dimension (die Attribute vom Verzeichnis). Beim Aufruf der SUB mächte ich bestimmen nach welcher Spalt sortert wird und in welche Richung (Direction). Wie löst man sowas in VBS/WSH? tks! Kiddy bearbeitet 10. Oktober 2009 von Power-Kiddy Mehr Infos Zitieren Link zu diesem Kommentar
Power-Kiddy 10 Geschrieben 10. Oktober 2009 Autor Melden Teilen Geschrieben 10. Oktober 2009 Hallo! Da hatte ich wohl einen Fehler in meinen Überlegungen und habe die Spalten mit den Dimensionen verwechselt! Die Lösung ist recht einfach: Die Spalten sind die Eintrge in der zweiten Dimenstion und damit kann ich die Einträge in der Schleife auch adressieren mit der ich den Sortieralgorythums durchlaufen. HIer der Code: Sub ArraySort(ByRef arrArray, ByVal intSpalte, ByVal bolRichtung) Dim intSpalten, i, j, k, Temp intSpalten = UBound(arrArray,2) For i = 0 To UBound(arrArray)-1 For j = i + 1 To UBound(arrArray) If bolRichtung Then If arrArray(i, intSpalte - 1) > arrArray(j, intSpalte - 1) Then For k = 0 To intSpalten Temp = arrArray(i, k) arrArray(i, k) = arrArray(j, k) arrArray(j, k) = Temp Next End If Else If arrArray(i, intSpalte - 1) < arrArray(j, intSpalte - 1) Then For k = 0 To intSpalten Temp = arrArray(i, k) arrArray(i, k) = arrArray(j, k) arrArray(j, k) = Temp Next End If End If Next Next End Sub Gruß! Kiddy Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.