次の方法で共有


InvisibleApp.EnterScope イベント (Visio)

内部コマンドが開始されたとき、または Automation クライアントが BeginUndoScope メソッドを使用してスコープを開いたときにキューに入れられます。

構文

EnterScope (app, nScopeID, bstrDescription)

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

パラメーター

名前 必須 / オプション データ型 説明
アプリ 必須 [IVAPPLICATION] スコープを含む Microsoft Visio のインスタンスです。
nScopeID 必須 Long 終了した操作、または BeginUndoScope メソッドによって返されるスコープ ID を表す言語に依存しない数値。
bstrDescription 必須 String 異なる言語バージョンで変更される操作のテキスト記述。 Visio 操作のユーザー インターフェイスの説明、または BeginUndoScope メソッドに渡される説明が含まれます。

注釈

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

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

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

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

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

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

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

EventInfo プロパティは、前に説明したように bstrDescription を返します。 さらに、VisEventProc への varMoreInfo 引数には、[<nScopeID>;<bErrOrCancelled>;<bstrDescription>;<nHwndContext>]次のように書式設定された文字列が含まれています。ここで、nHwndContext は、コマンドのコンテキストであるウィンドウのウィンドウ ハンドル (HWND) です。nHwndContext は 0 にすることができます。

EnterScope では、bErrOrCancelled は常にゼロです。

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

Private WithEvents vsoApplication As Visio.Application 
 
Private lngScopeID As Long 
 
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 のサポートおよびフィードバックを参照してください。