次の方法で共有


Application.MarkerEvent イベント (Visio)

QueueMarkerEvent メソッドを呼び出すことによって発生します。

構文

MarkerEvent (アプリSequenceNumContextString)

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

パラメーター

名前 必須 / オプション データ型 説明
アプリ 必須 [IVAPPLICATION] Microsoft Visio のアクティブなインスタンスです。
SequenceNum 必須 Long 過去のイベントを基準にしたこのイベントの順番です。
ContextString 必須 String QueueMarkerEvent メソッドから渡されたコンテキスト文字列です。

注釈

Visio によって発生する他のイベントとは異なり、MarkerEvent イベントはクライアント プログラムによって発生します。 クライアント プログラムが QueueMarkerEvent メソッドを呼び出した場合にのみ、クライアント プログラムは MarkerEvent イベントを受け取ります。

MarkerEvent イベントを QueueMarkerEvent メソッドと組み合わせて使用することにより、クライアント プログラムは自身に対するイベントをキューに格納できます。 クライアント プログラムが MarkerEvent イベントを受け取るのは、QueueMarkerEvent を呼び出した時点でイベント キューに格納されていたすべてのイベントを Visio が発生させた後です。

MarkerEvent イベントは、QueueMarkerEvent メソッドによって渡されたコンテキスト文字列と MarkerEvent イベントのシーケンス番号の両方を MarkerEvent イベント ハンドラーに渡します。 これらの値のいずれかを使用して、 QueueMarkerEvent 呼び出しを MarkerEvent イベントと関連付けることができます。 このようにして、クライアント プログラムは自身が発生させたイベントとそうでないイベントを区別できます。

たとえば、Visio のセルの値を変更するクライアント プログラムでは、プログラム自身が発生させなかった CellChanged イベントにだけ応答することができます。 クライアント プログラムは、最初に QueueMarkerEvent メソッドを呼び出し、後で使用するコンテキスト文字列を渡して、その処理のスコープを角かっこで囲むことができます。

 
vsoObject.QueueMarkerEvent "ScopeStart" 
 <My program changes cells here> 
vsoObject.QueueMarkerEvent "ScopeEnd" 

MarkerEvent イベント ハンドラーでは、クライアント プログラムは QueueMarkerEvent メソッドに渡されるコンテキスト文字列を使用して、発生した CellChanged イベントを識別できます。

 
Dim blsICausedCellChanges as Boolean 
 
Private Sub vsoObject_MarkerEvent (ByVal vsoApplication As Visio.IVApplication, _ 
 ByVal lngSequenceNum As Long, ByVal strContextString As String) 
 
 If strContextString = "ScopeStart" Then 
 blsICausedCellChanges = True 
 ElseIf strContextString = "ScopeEnd" Then 
 blsICausedCellChanges = "False" 
 End If 
 
End Sub 
 
Private Sub vsoObject_CellChanged (ByVal Cell As Visio.IVCell) 
 
 'Respond only if this client didn't cause a cell change. 
 If blsICausedCellChanges = False Then 
 <respond to the cell changes> 
 End If 
 
End Sub

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

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

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

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

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

通知を受け取るプログラムからこのイベントを処理する場合、MarkerEvent イベントは Application オブジェクトの EventInfo プロパティに追加情報を記録するイベントのグループの 1 つです。

EventInfo プロパティは、前に説明した ContextString を返します。 VisEventProc の引数 varMoreInfo は空になります。

この例では、MarkerEvent イベントを使用して、イベント キューにある 1 つのイベントをマークします。

このコード例を ThisDocument コード ウィンドウに貼り付けて、 UseMarker を実行します。 [イミディエイト] ウィンドウに出力が表示されます。

 
Dim WithEvents vsoApplication As Visio.Application 
 
Private Sub vsoApplication_MarkerEvent(ByVal app As Visio.IVApplication, _ 
 ByVal lngSequenceNum As Long, ByVal strContextString As String) 
 Debug.Print "Marker: " & app.EventInfo(0) 
 
End Sub 
 
Private Sub vsoApplication_ShapeAdded(ByVal vsoShape As Visio.IVShape) 
 Debug.Print " ShapeAdded: " & vsoShape.Name 
 
End Sub 
 
Public Sub UseMarker() 
 
 Set vsoApplication = ThisDocument.Application 
 
 'MarkerEvent events can be used to comment a segment 
 'of events in the queue. 
 vsoApplication.QueueMarkerEvent "I am starting..." 
 ActivePage.DrawRectangle 0, 0, 3, 3 
 vsoApplication.QueueMarkerEvent "I am finished..." 
 
End Sub

イミディエイト ウィンドウでの出力は次のようになります。

Marker: I am starting...

ShapeAdded: Sheet.1

Marker: I am finished...

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

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