次の方法で共有


Application.CurrentScope プロパティ (Visio)

イベントを発生させるスコープの ID を判別します。 読み取り専用です。

構文

CurrentScope

expressionApplication オブジェクトを 表す変数。

戻り値

Long

注釈

スコープが開いていない場合は、visScopeIDInvalid (-1) が返されます。 スコープ ID は、Microsoft Visio のコマンドに対応する Visio 内部のスコープ ID になるか、BeginUndoScope メソッドがオートメーション クライアントに渡す外部のスコープ ID になります。

EnterScope イベントが発生し、ExitScope イベントが発生していない場合、イベントの受信側では、スコープが開いていると見なされます。

イベント キューの発生がアプリケーション内部の特定スコープに関連しているのか、オートメーション クライアントが開いて閉じるスコープに関連するのかを判別するには、IsInScope プロパティを使用します。

この例は、CurrentScope プロパティを使用して、現在のスコープ ID を判別します。

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 のサポートおよびフィードバックを参照してください。