Просматривают:
1 Анонимно
Сортировка элементов массива |
||
|
||
---|---|---|
PC/director
Присоединился:
2005/2/5 2:25 Откуда РФ
Сообщений: 4640
|
есть код:
Set gb = ActivePage.FindShapes(, cdrTextShape) For Each s In gb 's.PositionX s.Text.Replace KW, FormatNumber(n, 0, vbTrue, vbFalse, vbFalse), False, ReplaceAll:=True n = n + 1 Next s Как отсортировать масив gb по значению элемента s.PositionX от большего к меньшему?
Опубликовано: 2008/10/22 16:04
|
|
_________________
I love vector graphics!!! |
||
|
Re: Сортировка элементов массива |
|
---|---|---|
Титан - модератор
Присоединился:
2006/4/8 19:42 Сообщений: 152
|
не проверял, но взят работающий кусок и адаптирован:
Set gb = ActivePage.FindShapes(, cdrTextShape) 'в объявлении New использовать не надо, ибо будет тормозить dim coll as Collection: set coll=new Collection for each s in gb collStuffSorted coll, s, -1 next ' теперь массив сортирован dim obj as object ' на всякий случай если не пройдет перебор через 's' for each obj in coll set s=obj 'а дальше работать с 's' как с обычным объектом Shape ............. ............. next Function collStuffSorted&(coll As Collection, sh as shape, ByVal Direction&) Dim a&, b&, C&, rel& a = 1: b = coll.Count: C = 0: rel = 0 dim key0 as double: key0 = sh.PositionX Do While b - a >= 0 C = (a + b) \ 2: rel = (key0 - coll(C).PositionX) * Direction Select Case rel Case is < 0: If C = a Then Exit Do Else b = C Case 0: Exit Do Case is > 0: If b = a Then Exit Do Else If a = C Then a = b Else a = C End Select Loop If C = 0 Then coll.Add sh Else If rel = -1 Then coll.Add s, , C Else coll.Add s, , , C End Function
Опубликовано: 2008/10/22 16:23
|
|
|
Re: Сортировка элементов массива |
|
---|---|---|
PC/director
Присоединился:
2005/2/5 2:25 Откуда РФ
Сообщений: 4640
|
wOxxOm
Спасибо за ответ, пока не пробовал. Как только время найду применю ... И напишу ощущения
Опубликовано: 2008/10/22 23:57
|
|
_________________
I love vector graphics!!! |
||