- Сообщения
- 33 762
- Реакции
- 11 041
А попробуйте пошаговокроме таблички с ошибкой никакой индикации. как подсвечивать ошибочную строку в редакторе?
А попробуйте пошаговокроме таблички с ошибкой никакой индикации. как подсвечивать ошибочную строку в редакторе?
при ошибке жмем Debug и ставим точку остановки на строчку выше ))кроме таблички с ошибкой никакой индикации. как подсвечивать ошибочную строку в редакторе?
Sub Testfind()
Dim sr As ShapeRange
Dim spp As Shape
Dim sr_counter As Long
Set sr = ActivePage.FindShapes(Type:=cdrGroupShape)
If sr.Count <> 0 Then
For Each sp In sr
For Each spp In sp.Shapes
If spp.SizeWidth = sp.SizeWidth And spp.SizeHeight = sp.SizeHeight Then
spp.Outline.Color.CMYKAssign 100, 0, 0, 0
Exit For
End If
Next spp
Next sp
Else
MsgBox "There are no group on the current page"
End If
End Sub
отлично работает. Спасибо. видимо sort неприменима в данном случае.Добрался до корела, вот так работает
Код:Sub Testfind() Dim sr As ShapeRange Dim spp As Shape Dim sr_counter As Long Set sr = ActivePage.FindShapes(Type:=cdrGroupShape) If sr.Count <> 0 Then For Each sp In sr For Each spp In sp.Shapes If spp.SizeWidth = sp.SizeWidth And spp.SizeHeight = sp.SizeHeight Then spp.Outline.Color.CMYKAssign 100, 0, 0, 0 Exit For End If Next spp Next sp Else MsgBox "There are no group on the current page" End If End Sub
Применима, но придется Shapes переписывать в сортируемую коллекцию, а это лополнительный цикл, за который можно и без него максимум посчитать, но по мне так проще именно так. Вдобавок, этим способом будут отсеяны рамки, не перекрывающие группуsort неприменима в данном случае.
Sub Testfind()
Dim sp As Shape
Dim sr As ShapeRange
Dim ss As ShapeRange
Set sr = ActivePage.FindShapes(Type:=cdrGroupShape)
If sr.Count <> 0 Then
For Each sp In sr
Set ss = sp.Shapes.All
ss.Sort "@shape1.width*@shape1.height < @shape2.width*@shape2.height"
ss.LastShape.Outline.SetProperties Color:=CreateCMYKColor(100, 0, 0, 0)
Next sp
Else
MsgBox "There are no groups on the current page"
End If
End Sub
У меня эта конструкция ошибку вызываетSet ss = sp.Shapes.All
Ну так я ж и говорюесли элементы группы находятся в габаритах самого большого объекта
этим способом будут отсеяны рамки, не перекрывающие группу