次の方法で共有


InvisibleApp.IsInScope プロパティ (Visio)

イベント ハンドラーへの呼び出しが、EnterScope イベントと ExitScope イベントの間で実行されているかどうかを判別します。 読み取り専用です。

構文

IsInScope (nCmdID)

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

パラメーター

名前 必須 / オプション データ型 説明
nCmdID 必須 Long スコープ ID です。

戻り値

Boolean

注釈

スコープ ID を表す定数には visCmd というプレフィックスが付いていて、Visio タイプ ライブラリで宣言されています。 BeginUndoScope メソッドによって返される ID も使用できます。

このプロパティを CellChanged イベント ハンドラーで使用して、セルの変更が、特定の操作の結果発生したかどうかを判別できます。

この例では、 IsInScope プロパティを使用して 、CellChanged イベントを処理するプロシージャの呼び出しが特定のスコープ内にあるかどうかを判断する方法を示します。つまり、そのスコープの EnterScope イベントと ExitScope イベントの間で呼び出しが発生するかどうかです。

 
Private WithEvents vsoApplication As Visio.Application 
Private lngScopeID As Long 
 
Public Sub IsInScope_Example() 
 
 Dim vsoShape As Visio.Shape 
 
 'Set the module-level application variable to 
 'trap application-level events. 
 Set vsoApplication = Application 
 
 'Begin a scope. 
 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 (to trigger the CellChanged 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 my 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 bstrDescription As String, _ 
 ByVal bErrOrCancelled As Boolean) 
 
 If vsoApplication.CurrentScope = lngScopeID Then 
 Debug.Print "Exiting my scope " & nScopeID 
 Else 
 Debug.Print "ExitScope " & bstrDescription & "(" & nScopeID & ")" 
 End If 
 
End Sub

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。