Author |
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 |
|
|
dzeron
1 Posts |
Posted - 07/15/2007 : 20:48:34
|
Спасибки! Как раз - ТО. А зачем (эт мне просто так, интересно) в конце строчка: "on error goto 0"? Без нее тож работает... |
|
|
Tumanov
Russia
1198 Posts |
Posted - 07/15/2007 : 22:24:19
|
On Error Resume Next отключает стандартный обработчик, а On Error Goto 0 возвращает прежний режим. Если не вернуть, то придется все самому обрабатывать. Или работать, игнорируя все ошибки. И то и другое - плохо. Поэтому отключают обычно на коротком участке. |
|
|
|
Topic |
|