Регистрация | | запомнить |
 
 
ВК



Просматривают:   1 Анонимно





Сортировка элементов массива
print | #
PC/director
Присоединился:
2005/2/5 2:25
Откуда РФ
Сообщений: 4640
Offline
есть код:

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
Offline
не проверял, но взят работающий кусок и адаптирован:

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
Offline
wOxxOm
Спасибо за ответ, пока не пробовал.
Как только время найду применю ...
И напишу ощущения

Опубликовано: 2008/10/22 23:57
_________________
I love vector graphics!!!







Форма быстрого ответа
ЛогинИмя   Пароль   Логин
Сообщение:          

      ПРИМЕР


 [далее...]
Уведомлять о сообщениях в теме.



[Настройки поиска]