1 つ以上の図形が図面に追加された後に発生します。
構文
式。ShapeAdded (図形)
式Documents オブジェクトを表す変数。
パラメーター
| 名前 | 必須 / オプション | データ型 | 説明 |
|---|---|---|---|
| Shape | 必須 | [IVSHAPE] | 図面に追加された図形または図形のグループです。 |
注釈
図形の Type プロパティが visTypeGroup (2) または visTypePage (1) の場合、Shape オブジェクトは ShapeAdded イベントのソース オブジェクトとして機能できます。
SelectionAdded イベントと ShapeAdded イベントは、どちらも図形の作成後に発生するという点で似ています。 1 回の操作で複数の図形が追加された場合の動作が異なります。 [貼り付け] 操作で 3 つの新しい図形が作成されるとします。 ShapeAdded イベントは 3 回発生し、3 つのオブジェクトのそれぞれに作用します。 SelectionAdded イベントは 1 回発生し、3 つの新しい図形が選択された Selection オブジェクトに対して作用します。
ShapeAdded イベントがページに追加された新しい図形または図形のグループによってトリガーされたか、グループ化されている既存の図形のセットによってトリガーされたか、または貼り付け操作によってトリガーされたかを調べるには、Application.IsInScope プロパティを使用できます。 IsInScope に visCmdObjectGroup を渡して True が返される場合、ShapeAdded イベントはグループ化操作によってトリガーされたことになります。 visCmdUFEditPaste または visCmdEditPasteSpecial を渡したときに IsInScope が 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 のサポートおよびフィードバックを参照してください。