Shapes プロパティ (Excel)Shapes.Range property (Excel)

Shapesコレクション内の図形のサブセットを表す**ShapeRange** オブジェクトを返します。Returns a ShapeRange object that represents a subset of the shapes in a Shapes collection.


範囲(Index)expression.Range (Index)

表現 Shapes オブジェクトを表す変数です。expression A variable that represents a Shapes object.


名前Name 必須 / オプションRequired/Optional データ型Data type 説明Description
IndexIndex 必須Required VariantVariant 図形範囲に含む、各図形を指定します。The individual shapes to be included in the range. 図形のインデックス番号を指定する整数、図形の名前を指定する文字列、あるいは整数または文字列を含む配列を使用できます。Can be an integer that specifies the index number of the shape, a string that specifies the name of the shape, or an array that contains either integers or strings.


Rangeプロパティを使用して任意の数の図形を取得できますが、コレクションの1つのメンバーだけを取得する場合は、 Item メソッドを使用する方が簡単です。Although you can use the Range property to return any number of shapes, it's simpler to use the Item method if you only want to return a single member of the collection. たとえば、 Shapes(1) より Shapes.Range(1) と記述すると効率的です。For example, Shapes(1) is simpler than Shapes.Range(1).

Index に整数または文字列の配列を指定するには、 Array 関数を使用します。To specify an array of integers or strings for Index, you can use the Array function. たとえば、次の命令は、名前で指定した 2 つの図形を返します。For example, the following instruction returns two shapes specified by name.

 Dim arShapes() As Variant 
 Dim objRange As Object 
 arShapes = Array("Oval 4", "Rectangle 5") 
 Set objRange = ActiveSheet.Shapes.Range(arShapes)

Excel で、ワークシート上にあるすべての Shape オブジェクトを含む ShapeRange オブジェクトを取得する場合、このプロパティは使用できません。In Microsoft Excel, you cannot use this property to return a ShapeRange object containing all the Shape objects on a worksheet. 代わりに、次のコードを使用します。Instead, use the following code.

 Worksheets(1).Shapes.SelectAll ' select all shapes set sr = Selection.ShapeRange ' create ShapeRange


次の使用例は、myDocument の図形 1 と図形 3 に塗りつぶしのパターンを設定します。This example sets the fill pattern for shapes one and three on myDocument.

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

次の使用例は、 _myDocument_の "楕円 4" と "Rectangle 5" という名前の図形に塗りつぶしのパターンを設定します。This example sets the fill pattern for the shapes named Oval 4 and Rectangle 5 on myDocument.

Dim arShapes() As Variant 
Dim objRange As Object 
Set myDocument = Worksheets(1) 
arShapes = Array("Oval 4", "Rectangle 5") 
Set objRange = myDocument.Shapes.Range(arShapes) 
objRange.Fill.Patterned msoPatternHorizontalBrick

次の使用例は、myDocument の図形 1 に塗りつぶしのパターンを設定します。This example sets the fill pattern for shape one on myDocument.

Set myDocument = Worksheets(1) 
Set myRange = myDocument.Shapes.Range(1) 
myRange.Fill.Patterned msoPatternHorizontalBrick

次の使用例は、myDocument のすべてのオートシェイプを含む配列を作成し、その配列を使用して図形範囲を定義し、次にその範囲内のすべての図形を左右に整列します。This example creates an array that contains all the AutoShapes on myDocument, uses that array to define a shape range, and then distributes all the shapes in that range horizontally.

Set myDocument = Worksheets(1) 
With myDocument.Shapes 
 numShapes = .Count 
 If numShapes > 1 Then 
 numAutoShapes = 1 
 ReDim autoShpArray(1 To numShapes) 
 For i = 1 To numShapes 
 If .Item(i).Type = msoAutoShape Then 
 autoShpArray(numAutoShapes) = .Item(i).Name 
 numAutoShapes = numAutoShapes + 1 
 End If 
 If numAutoShapes > 1 Then 
 ReDim Preserve autoShpArray(1 To numAutoShapes) 
 Set asRange = .Range(autoShpArray) 
 asRange.Distribute msoDistributeHorizontally, False 
 End If 
 End If 
End With

サポートとフィードバック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.