Application.ExitScope イベント (Visio)
内部コマンドが終了したとき、または Automation クライアントが 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 を返します。 さらに、VisEventProc への varMoreInfo 引数には、[<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 のサポートおよびフィードバックを参照してください。