Вот, допустим, механизм сортировки, отдельным модулем:
- Код: Выделить всё
Sub SortString(vArray() As String, vArray2() As String)
Dim TempVal As String
Dim i&, GapSize&, CurPos&, FirstRow&, LastRow&, NumRows&
FirstRow = LBound(vArray)
LastRow = UBound(vArray)
NumRows = LastRow - FirstRow + 1
Do
GapSize = GapSize * 3 + 1
Loop Until GapSize > NumRows
Do
GapSize = GapSize \ 3
For i = GapSize + FirstRow To LastRow
CurPos = i
TempVal = vArray(i)
Do While vArray(CurPos - GapSize) > TempVal
vArray(CurPos) = vArray(CurPos - GapSize)
'''Возможно, сюда?
CurPos = CurPos - GapSize
If (CurPos - GapSize) < FirstRow Then Exit Do
Loop
vArray(CurPos) = TempVal
Next
Loop Until GapSize = 1
End Sub
где vArray() - сортируемый массив, а vArray2(), тот, чьи значения должны быть перемещены аналогично перемещениям в vArray()
Где и как в модуль включить изменения второго массива вслед за изменениями первого? Я понимаю, что в месте, которое я отметил, но не понимаю как. Если вписать в это место
vArray2(CurPos) = vArray2(CurPos - GapSize), то сортировка получается неправильно. Мда.. надеюсь, простите меня за такие вопросы )
Человек - дитя препятствий. Блан де Сент-Бонне.