Documents.ShapeAdded イベント (Visio)

1 つ以上の図形が図面に追加された後に発生します。

構文

ShapeAdded (Shape)

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

パラメーター

名前 必須 / オプション データ型 説明
図形 必須 [IVSHAPE] 図面に追加された図形または図形のグループです。

注釈

Shape オブジェクトは、図形の Type プロパティが visTypeGroup (2) または visTypePage (1) の場合、ShapeAdded イベントのソース オブジェクトとして機能できます。

SelectionAdded イベントと ShapeAdded イベントは、図形が作成された後に起動するという点で似ています。 1 つの操作で複数の図形を追加する場合の動作が異なります。 貼り付け操作で 3 つの新しい図形が作成されたとします。 ShapeAdded イベントは 3 回発生し、3 つのオブジェクトのそれぞれに対して動作します。 SelectionAdded イベントは 1 回発生し、3 つの新しい図形が選択されている Selection オブジェクトに対して動作します。

ShapeAdded イベントが、ページに追加される新しい図形または図形のグループ、グループ化されている既存の図形のセット、または貼り付けアクションによってトリガーされたかどうかを判断するには、Application.IsInScope プロパティを使用します。 IsInScopevisCmdObjectGroup を渡して True が返される場合、ShapeAdded イベントはグループ化操作によってトリガーされたことになります。 IsInScopevisCmdUFEditPaste または visCmdEditPasteSpecial に渡されたときに True を返す場合、ShapeAdded イベントは貼り付け操作によってトリガーされました。 IsInScope にこれらの引数をすべて渡して False が返される場合、イベントは新しい図形がページに追加されたことでトリガーされたことになります。

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

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

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

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

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

この VBA の例は、図面に追加された図形で、"Square" という名前のマスター シェイプに基づいて作成された図形を数える方法を示します。 Visio の作業中のドキュメントのプロジェクトにコードを貼り付けます。

DocumentSaved イベント ハンドラーは、アクティブな図面を保存すると実行されます。 ハンドラーは、カウントの格納に使用される整数変数 intNumberOfSquares を初期化します。

ShapeAdded イベント ハンドラーは、図形をステンシルからドラッグするか、描画ツールで描画するか、クリップボードから貼り付けるかに関係なく、図形が描画ページに追加されるたびに実行されます。 ハンドラーは、新しい図形の Master プロパティをチェックし、図形が Square マスターに基づいている場合は、 intNumberOfSquares をインクリメントします

 
Dim intNumberOfSquares As Integer 
 
Private Sub Document_DocumentSaved(ByVal vsoDocument As Visio.IVDocument) 
 
 'Initialize number of squares added. 
 intNumberOfSquares = 0 
 
End Sub 
 
Private Sub Document_ShapeAdded(ByVal vsoShape As Visio.IVShape) 
 
 Dim vsoMaster As Visio.Master 
 
 'Get the Master property of the shape. 
 Set vsoMaster = vsoShape.Master 
 
 'Check whether the shape has a master. If not, 
 'the shape was created locally. 
 If Not (vsoMaster Is Nothing) Then 
 
 'Check whether the master is "Square". 
 If vsoMaster.Name = "Square" Then 
 
 'Increment the count for the number of squares added. 
 intNumberOfSquares = intNumberOfSquares + 1 
 
 End If 
 
 End If 
 
 MsgBox "Number of squares: " & intNumberOfSquares, vbInformation, _ 
 "Document Created Example" 
 
End Sub

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

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