Вроде да, осталось сделать перебор по группам19 корел. сортирует выделение по размеру
Я не понимаю как управлять цветом самого большого объекта. Подскажите(Sub testsize3()
Dim sr As ShapeRange
Dim sr_counter As Long
Set sr = ActiveSelectionRange
sr.Sort "@shape1.width*@shape1.height < @shape2.width*@shape2.height"
For sr_counter = sr.Count To 2 Step -1
sr(sr_counter - 1).LeftX = sr(sr_counter).RightX + 5
sr(sr_counter - 1).CenterY = sr(sr_counter).CenterY
Next sr_counter
End Sub
В смысле? У вас же уже есть упорядоченный массив, вместо сдвижки сделайте
obj(obj.count).SetOutlineProperties color:=CreateCMYKColor(100, 0, 0, 0)
и самый последний перекрасится
Sub testsize3()
Dim sr As ShapeRange
Dim sr_counter As Long
Set sr = ActiveSelectionRange
sr.Sort "@shape1.width*@shape1.height < @shape2.width*@shape2.height"
For sr_counter = sr.Count To 2 Step -1
Next sr_counter
sr(sr.Count).SetOutlineProperties color:=CreateCMYKColor(100, 0, 0, 0)
End Sub
А вот этот пустой цикл лишний совсемFor sr_counter = sr.Count To 2 Step -1 Next sr_counter
Наоборот упрощенныйКакой-то сложный на мой взгляд подход.
Sub Testfind()
Dim sr As ShapeRange
Dim sr_counter As Long
Set sr = ActivePage.FindShapes(Type:=cdrGroupShape)
If sr.Count <> 0 Then
sr.Ungroup
sr.Sort "@shape1.width*@shape1.height < @shape2.width*@shape2.height"
sr(sr.Count).Outline.SetProperties color:=CreateCMYKColor(100, 0, 0, 0)
Else
MsgBox "There are no group on the current page"
End If
End Sub
Sub Testfind()
Dim sr As ShapeRange
Dim sr_counter As Long
Set sr = ActivePage.FindShapes(Type:=cdrGroupShape)
If sr.Count <> 0 Then
for each sp in sr
sp.Shapes.Sort "@shape1.width*@shape1.height < @shape2.width*@shape2.height"
sp.Shapes(sp.Shapes.Count).Outline.SetProperties color:=CreateCMYKColor(100, 0, 0, 0)
next sp
Else
MsgBox "There are no group on the current page"
End If
End Sub
Этот код не работает. Вместо sr вы писали sp? или sp это отдельный shaperange?Я ж вам сто раз говорил - разгруппировывать ничего не надо
Примерно как то так не знаю будет ваш Sort работать с Shapes адекватно пишу с утюга
Код:Sub Testfind() Dim sr As ShapeRange Dim sr_counter As Long Set sr = ActivePage.FindShapes(Type:=cdrGroupShape) If sr.Count <> 0 Then for each sp in sr sp.Shapes.Sort "@shape1.width*@shape1.height < @shape2.width*@shape2.height" sp.Shapes(sp.Shapes.Count).Outline.SetProperties color:=CreateCMYKColor(100, 0, 0, 0) next sp Else MsgBox "There are no group on the current page" End If End Sub
sr - это коллекция групп, которую вы получили после поискаВместо sr вы писали sp? или sp это отдельный shaperange?
sr - это коллекция групп, которую вы получили после поиска
Я в цикле перебираю ее по очереди sp - текущий элемент данной коллекции т е группа с которой мы проводим действия
Что именно не работает?
Sub Testfind()
Dim sp As Shape
Dim sr As ShapeRange
Dim sr_counter As Long
Set sr = ActivePage.FindShapes(Type:=cdrGroupShape)
If sr.Count <> 0 Then
For Each sp In sr
sp.Shapes.Sort "@shape1.width*@shape1.height < @shape2.width*@shape2.height"
sp.Shapes(sp.Shapes.Count).Outline.SetProperties color:=CreateCMYKColor(100, 0, 0, 0)
Next sp
Else
MsgBox "There are no group on the current page"
End If
End Sub
Ну это почти очевидно, что где то неправильно метод или свойство, строка то какая в макросе на которую ругается? Я делаю ставку на sp.Shapes.SortКод:Sub Testfind() Dim sp As Shape Dim sr As ShapeRange Dim sr_counter As Long Set sr = ActivePage.FindShapes(Type:=cdrGroupShape) If sr.Count <> 0 Then For Each sp In sr sp.Shapes.Sort "@shape1.width*@shape1.height < @shape2.width*@shape2.height" sp.Shapes(sp.Shapes.Count).Outline.SetProperties color:=CreateCMYKColor(100, 0, 0, 0) Next sp Else MsgBox "There are no group on the current page" End If End Sub
Посмотреть вложение 142646
Как посмотреть строку на которую ругается? для shapes sort не могу найти описания.Ну это почти очевидно, что где то неправильно метод или свойство, строка то какая в макросе на которую ругается? Я делаю ставку на sp.Shapes.Sort
В редакторе макросов разумеетсяКак посмотреть строку на которую ругается?
кроме таблички с ошибкой никакой индикации. как подсвечивать ошибочную строку в редакторе?В редакторе макросов разумеется