Application.ExitScope イベント (Visio)

内部コマンドが終了したときや、オートメーション クライアントが EndUndoScope メソッドを使用してスコープを終了したときにキューに入れられます。

構文

ExitScope (app, nScopeID, bstrDescription, bErrOrCancelled)

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

パラメーター

名前 必須 / オプション データ型 説明
アプリ 必須 [IVAPPLICATION] スコープを含む Microsoft Visio のインスタンスです。
nScopeID 必須 Long 終了したばかりの操作を説明する言語に依存しない番号、 または BeginUndoScope メソッドによって返されるスコープ ID。
bstrDescription 必須 String 異なる言語バージョンで変更される操作のテキストによる説明。 Visio 操作の UI 説明または BeginUndoScope メソッドに渡された説明が含まれます。
bErrOrCancelled 必須 ブール型 (Boolean) スコープ内でエラーが発生した場合、またはスコープが取り消された場合は True、エラーがなく、取り消されなかった場合は False です。

注釈

Visio 操作の場合に返される nScopeID 値は、 visCmd* で始まるコマンド関連の定数と同等です。

Microsoft Visual Basic または Visual Basic for Applications (VBA) を使用している場合、このトピックの構文を使用して、イベントを一般的な方法で効率的に処理できます。

独自の Event オブジェクトを作成する場合は、 Add または AddAdvise メソッドを使用します。

アドオンを実行する Event オブジェクトを作成するには、EventList コレクションに対して Add メソッドを使用します。

通知を受け取る Event オブジェクトを作成するには、AddAdvise メソッドを使用します。

作成するイベントのイベント コードについては、「イベント コード」を参照してください。

AddAdvise メソッドを使用して作成された接続を介して通知を受信するプログラムからこのイベントを処理する場合、ExitScope イベントは、Application オブジェクトの EventInfo プロパティに追加情報を記録する選択されたイベントのグループの 1 つです。

前述のように、 EventInfo プロパティは bstrDescription を返します。 さらに、VisEventProcvarMoreInfo 引数には、次のような形式の文字列が含まれています。[<nScopeID>;<bErrOrCancelled>;<bstrDescription>;<nHwndContext>]nHwndContext は、コマンドのコンテキストであるウィンドウのウィンドウ ハンドル (HWND) です。nHwndContext は 0 である可能性があります。

ExitScope では、操作が失敗するか取り消されると、bErrOrCancelled が 0 (ゼロ) 以外の値になります。

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

 
Private WithEvents vsoApplication As Visio.Application 
Private lngScopeID AsLong 
 
Public Sub Scope_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 a 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 "Exit Scope " & bstrDescription & "(" & nScopeID & ")" 
 End If 
 
End Sub

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

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