Shapes オブジェクト (Excel)

指定したシート上のすべての Shape オブジェクトのコレクション。

注釈

Shape オブジェクトは、オートシェイプ、フリーフォーム、OLE オブジェクト、画像など、描画レイヤーのオブジェクトを表します。

注:

ドキュメント上の図形のサブセットを操作する場合 (たとえば、ドキュメント上のオートシェイプのみ、または選択した図形のみに対して何かを行う場合)、操作する図形を含む ShapeRange コレクションを作成する必要があります。

Shapes コレクションを取得 するには、 Worksheet オブジェクトの Shapes プロパティを使用します。 次の例では、 myDocument のすべての図形を選択します。

注:

(プロパティの削除や設定など) を行う場合は、シート上のすべての図形を同時に選択し、選択範囲の ShapeRange プロパティを使用して、シート上のすべての図形を含む ShapeRange オブジェクトを作成し、適切なプロパティまたはメソッドを ShapeRange オブジェクトに適用します。

Set myDocument = Worksheets(1) 
myDocument.Shapes.SelectAll

単一の Shape オブジェクトを取得するには、Shapes (index) を使用します。index は図形の名前またはインデックス番号です。 次の使用例は、 myDocument の図形 1 の塗りつぶしを事前設定された網掛けに設定します。

Set myDocument = Worksheets(1) 
myDocument.Shapes(1).Fill.PresetGradient _ 
 msoGradientHorizontal, 1, msoGradientBrass

Shapes コレクションのサブセットを表す ShapeRange コレクションを取得するには、Range (index) を使用します。ここで、index は図形の名前またはインデックス番号、または図形名またはインデックス番号の配列です。 次の使用例は、 myDocument の図形 1 と 3 の塗りつぶしパターンを設定します。

Set myDocument = Worksheets(1) 
myDocument.Shapes.Range(Array(1, 3)).Fill.Patterned _ 
 msoPatternHorizontalBrick

シートの ActiveX コントロールには、シートを表示するときに [名前] ボックスに表示できるコントロールを含む図形の名前と、コントロールのコード名の 2 つの名前があります。この名前は、プロパティ ウィンドウの [名前] の右側にあるセルに表示されます。 最初にコントロールをシートに追加すると、図形名とコード名が一致します。 ただし、図形名またはコード名を変更した場合、もう一方は自動的に一致するように変更されません。

コントロールのイベント プロシージャの場合は、コントロールのコード名を使用します。 Shapes または OLEObjects コレクションからコントロールを取得する場合は、コード名ではなく、図形の名前を使用してコントロールを指定します。 たとえば、コード名および図形の名前が既定の CheckBox1 というチェック ボックスを追加したと仮定します。 コントロールの [プロパティ] ウィンドウの [(名前)] に「chkFinished」と入力してコード名を変更した場合は、イベント プロシージャ名には必ず chkFinished を使用しますが、Shapes または OLEObject コレクションからコントロールを取得する場合は、次のように CheckBox1 を使用する必要があります。

Private Sub chkFinished_Click() 
 ActiveSheet.OLEObjects("CheckBox1").Object.Value = 1 
End Sub

メソッド

プロパティ

関連項目

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

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