Свойство Application.CurrentScope (Visio)
Определяет идентификатор области, которая вызывает срабатывание события. Только для чтения.
Синтаксис
expression. CurrentScope
выражение: переменная, представляющая объект Application.
Возвращаемое значение
Длинное целое
Замечания
Возвращает visScopeIDInvalid (-1), если область не открыта. Идентификатор области может быть внутренним идентификатором области Microsoft Visio, соответствующим команде Visio, или идентификатором внешней области, переданным клиенту службы автоматизации методом BeginUndoScope .
Получатели события считают область открытой, если событие EnterScope сработало, но событие ExitScope не сработало.
Чтобы определить, связана ли очередь событий с определенной областью, внутренней для приложения или открытой и закрытой клиентом службы автоматизации, используйте свойство IsInScope .
Пример
В этом примере показано, как использовать свойство CurrentScope для определения идентификатора текущей области.
Private WithEvents vsoApplication As Visio.Application
Private lngScopeID As Long
Public Sub ScopeActions()
Dim vsoShape As Visio.Shape
'Set the module level application variable to
'trap Application level events.
Set vsoApplication = Application
'Begin a scope, set the module level variable.
lngScopeID = Application.BeginUndoScope("Draw Shapes")
'Draw three shapes.
Set vsoShape = ActivePage.DrawRectangle(1, 2, 2, 1)
ActivePage.DrawOval 3, 4, 4, 3
ActivePage.DrawLine 4, 5, 5, 4
'Change a cell (which would trigger a cell changed event).
vsoShape.Cells("Width").Formula = 5
'End and commit this scope.
Application.EndUndoScope lngScopeID, True
End Sub
Private Sub vsoApplication_CellChanged(ByVal Cell As IVCell)
'Check to see if this cell change is the result of something
'happening within the scope.
If vsoApplication.IsInScope(lngScopeID) Then
Debug.Print Cell.Name & " changed in scope "; lngScopeID
End If
End Sub
Private Sub vsoApplication_EnterScope(ByVal app As IVApplication, _
ByVal nScopeID As Long, _
ByVal bstrDescription As String)
If vsoApplication.CurrentScope = lngScopeID Then
Debug.Print "Entering current scope " & nScopeID
Else
Debug.Print "Enter Scope " & bstrDescription & "(" & nScopeID & ")"
End If
End Sub
Private Sub vsoApplication_ExitScope(ByVal app As IVApplication, _
ByVal nScopeID As Long, _
ByVal strDescription As String, _
ByVal bErrOrCancelled As Boolean)
If vsoApplication.CurrentScope = lngScopeID Then
Debug.Print "Exiting current scope " & nScopeID
Else
Debug.Print "ExitScope " & bstrDescription & "(" & nScopeID & ")"
End If
End Sub
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.