Сортировка одномерного цифрового массива
Array.Sort(Имя_массива)
Существуют ли в VBA подобные методы сортировки?
Это не совсем так. Я говорила про VB.NET? а не про VB 6!
И работала я в Visual Studio 2005. Так там эта конструкция есть. Неужели же в VBA нет стандартных методов сортировки?
Пожалуйста, ответьте, если знаете.
Пожалуйста, ответьте, если знаете.
К сожалению, нет. Может вам подойдет перебором в цикле? Или может еще проще? Какая задача стоит?
А задача такая, что нужна быстрая сортировка множества одномерных цифровых массивов - номеров некоторых ссылок. Вот и всё.
Извините за настырность, но в Visual Basic есть и такой оператор :
Имя_массива.Sort(...). Жаль, что в VBA нет подобного. Правда в WORD есть оператор Sort, например, для сортировки абзацев или ещё каких-то текстов. Как его приспособить к моей задаче я не знаю.
Можно, конечно сочинить самому невидимую таблицу и там сортить., но имхо самому лучше написать процедуру сортировки эллементов, так как это менее гемморойней, быстрее, удобнее, надежнее.
Да не за что! :)
Да можно без таблицы. Все оч. просто.
В пустой документ вставить текст, которые надо сортировать и:
Selection.Sort SortOrder:=wdSortOrderAscending
или
Selection.Sort SortOrder:=wdSortOrderDescending
ВСЕ!!!
Проверил на однострочных абзацах (было примерно 700 строк) - работает как часы и весьма быстро (меньше секунды).
В пустой документ вставить текст, которые надо сортировать и:
Selection.Sort SortOrder:=wdSortOrderAscending
или
Selection.Sort SortOrder:=wdSortOrderDescending
ВСЕ!!!
Проверил на однострочных абзацах (было примерно 700 строк) - работает как часы и весьма быстро (меньше секунды).
Автор интересуется сортировкой массива, а не выделения в документе.
В пустой документ вставить текст, которые надо сортировать и:
Selection.Sort SortOrder:=wdSortOrderAscending
или
Selection.Sort SortOrder:=wdSortOrderDescending
ВСЕ!!!
Проверил на однострочных абзацах (было примерно 700 строк) - работает как часы и весьма быстро (меньше секунды).
Ну, это совсем как чесать левое ухо правой ногой. Мне же нужно сортировать массив, без всякой привязки к документу! С таким же успехом я могла обратиться к Excel и сортировать там.
Кстати, я уже написала программу сортировки, спасибо за подсказки.
-----------------------------------------------------
Public Sub ShellSort(vArray As Variant)
Dim TempVal As Variant
Dim i As Long, GapSize As Long, CurPos As Long
Dim FirstRow As Long, LastRow As Long, NumRows As Long
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 CompareResult(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