All Forums
 Категория Visio
 Форум Вопросы и ответы
 Мастер или нет
Author Previous Topic Topic Next Topic  

d-zero-n

Russia
1 Posts

Posted - 07/14/2007 :  13:05:59
Здравствуйте. Подскажите такую вещь:
У меня на листе много шейпов, часть из них образованы не от мастеров.
Мне надо посчитать, сколько объектов от конкретного мастера. Пишу
Application.ActivePage.Shapes.Item(i).Master, но при обращении к вручнуюнарисованным шейпам, выдает ошибку. Пробовал выкручиваться через iserror(....Item(i).Master) - не выходит.

Tumanov

Russia
1198 Posts

Posted - 07/14/2007 :  15:02:28
Надо примерно так:
Sub ttt()
Dim Sh As Visio.Shape
For Each Sh In ActivePage.Shapes
On Error Resume Next
s = Sh.Master.Name
If Err Then
s = ""
End If
On Error GoTo 0
If s = "" Then
Debug.Print "Нарисованный шейп"
ElseIf s = "3-way" Then
Debug.Print "3-way"
Else
Debug.Print "Шейп от другого мастера"
End If
Next
End Sub
Go to Top of Page

dzeron

1 Posts

Posted - 07/15/2007 :  20:48:34
Спасибки! Как раз - ТО.
А зачем (эт мне просто так, интересно) в конце строчка:
"on error goto 0"? Без нее тож работает...
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 07/15/2007 :  22:24:19
On Error Resume Next отключает стандартный обработчик, а On Error Goto 0 возвращает прежний режим.
Если не вернуть, то придется все самому обрабатывать. Или работать, игнорируя все ошибки. И то и другое - плохо. Поэтому отключают обычно на коротком участке.
Go to Top of Page
  Previous Topic Topic Next Topic  
Данный сайт является архивом форума visio.artberg.ru, который был закрыт в связи с переходом на новую платформу visio.getbb.ru
Все материалы доступны только для чтения! Если у вас появились вопросы, или вы хотите что-то обсудить, связанное с Visio, обращайтесь на новый форум!
Архив был создан благодаря совместным усилиям Генадия Туманова @Tumanov (visio.artberg.ru), Александра ака @Surrogate (visio.getbb.ru), и Николая Белых @nbelyh (unmanagedvisio.com)