図形の追加イベント (Visio)Shape.ShapeAdded event (Visio)

1 つ以上の図形が図面に追加された後に発生します。Occurs after one or more shapes are added to a document.

構文Syntax

追加された図形(図形)expression.ShapeAdded (Shape)

Shape オブジェクトを表す変数を取得します。expression A variable that represents a Shape object.

パラメーターParameters

名前Name 必須 / オプションRequired/Optional データ型Data type 説明Description
ShapeShape 必須Required [IVSHAPE][IVSHAPE] 図面に追加された図形または図形のグループです。The shape or group of shapes that was added to the document.

解説Remarks

図形のTypeプロパティがvisTypeGroup (2) またはvisTypePage (1) の場合、 shapeオブジェクトは、図形が追加された図形のソースオブジェクトとして機能することができます。A Shape object can serve as the source object for the ShapeAdded event if the shape's Type property is visTypeGroup (2) or visTypePage (1).

Selectionaddedイベントと shape追加イベントは、両方のイベントが作成された後に発生するという点が似ています。The SelectionAdded and ShapeAdded events are similar in that they both fire after shape(s) are created. 1回の操作で複数の図形が追加された場合の動作が異なります。They differ in how they behave when a single operation adds several shapes. 貼り付け操作で3つの新しい図形が作成されたとします。Suppose a Paste operation creates three new shapes. 図形が追加されたイベントは3回発生し、3つの各オブジェクトに対して動作します。The ShapeAdded event fires three times and acts on each of the three objects. Selectionaddedイベントは1回発生し、3つの新しい図形が選択されているSelectionオブジェクトに対して動作します。The SelectionAdded event fires once, and it acts on a Selection object in which the three new shapes are selected.

図形が追加されたかどうか、グループ化されている既存の図形のセット、または貼り付けの操作によって、図形の追加イベントが発生したかどうかを確認するには、 IsInScopeプロパティを使用します。To determine if a ShapeAdded event was triggered by a new shape or group of shapes being added to the page, by a set of existing shapes being grouped, or by a paste action, you can use the Application.IsInScope property. IsInScopevisCmdObjectGroup を渡して True が返される場合、ShapeAdded イベントはグループ化操作によってトリガーされたことになります。If IsInScope returns True when passed visCmdObjectGroup, the ShapeAdded event was triggered by a grouping action. VisCmdUFEditPasteまたはvisCmdEditPasteSpecialに渡されたときにIsInScopeTrueを返す場合は、貼り付け操作によって、図形の追加イベントが発生しました。If IsInScope returns True when passed visCmdUFEditPaste or visCmdEditPasteSpecial, the ShapeAdded event was triggered by a paste operation. IsInScope にこれらの引数をすべて渡して False が返される場合、イベントは新しい図形がページに追加されたことでトリガーされたことになります。If IsInScope returns False when passed all of these arguments, the event must have been triggered by new shapes being added to the page.

Microsoft Visual Basic または Visual Basic for Applications (VBA) を使用している場合、このトピックの構文を使用して、イベントを一般的な方法で効率的に処理できます。If you are using Microsoft Visual Basic or Visual Basic for Applications (VBA), the syntax in this topic describes a common, efficient way to handle events.

独自のイベントオブジェクトを作成する場合は、 Add メソッドまたは**AddAdvise** メソッドを使用します。If you want to create your own Event objects, use the Add or AddAdvise method.

アドオンを実行する Event オブジェクトを作成するには、EventList コレクションに対して Add メソッドを使用します。To create an Event object that runs an add-on, use the Add method as it applies to the EventList collection.

通知を受け取る Event オブジェクトを作成するには、AddAdvise メソッドを使用します。To create an Event object that receives notification, use the AddAdvise method.

作成するイベントのイベント コードについては、「イベント コード」を参照してください。To find an event code for the event that you want to create, see Event codes.

Example

この VBA の例では、正方形と呼ばれるマスターシェイプに基づいて図面に追加された図形をカウントする方法を示します。This VBA example shows how to count shapes added to a drawing that are based on a master called Square. Visio で作業中の文書のプロジェクトにコードを貼り付けます。Paste the code into the active document's project in Visio.

Documentsavedイベントハンドラーは、作業中の文書が保存されるときに実行されます。The DocumentSaved event handler runs when the active document is saved. このハンドラーは、カウントを格納するために使用される整数変数_intNumberOfSquares_を初期化します。The handler initializes an integer variable, intNumberOfSquares , which is used to store the count.

図形が図面ページに追加されたとき、図形をステンシルからドラッグしたとき、描画ツールで描画したとき、またはクリップボードから貼り付けたときに、図形が追加されるたびに、図形が追加されたイベントハンドラーが実行れます。The ShapeAdded event handler runs each time a shape is added to the drawing page, whether the shape is dragged from a stencil, drawn with a drawing tool, or pasted from the Clipboard. ハンドラーは新しい図形のMasterプロパティをチェックし、図形が四角形のマスターシェイプに基づいている場合は、 _intNumberOfSquares_をインクリメントします。The handler checks the Master property of the new shape, and if the shape is based on the Square master, increments 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

サポートとフィードバックSupport and feedback

Office VBA またはこの説明書に関するご質問やフィードバックがありますか?Have questions or feedback about Office VBA or this documentation? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.