次の方法で共有


Shapes.Range プロパティ (Excel)

Shapes コレクション内の 図形 のサブセットを表す ShapeRange オブジェクトを返します。

構文

範囲 (インデックス)

表現Shapes オブジェクトを表す変数です。

パラメーター

名前 必須 / オプション データ型 説明
Index 必須 バリアント型 (Variant) 図形範囲に含む、各図形を指定します。 図形のインデックス番号を指定する整数、図形の名前を指定する文字列、あるいは整数または文字列を含む配列を使用できます。

注釈

Range プロパティを使用して任意の数の図形を返すことができますが、コレクションの 1 つのメンバーのみを返す場合は Item メソッドを使用する方が簡単です。 たとえば、 Shapes(1) より Shapes.Range(1) と記述すると効率的です。

Index に整数または文字列の配列を指定するには、 Array 関数を使用します。 たとえば、次の命令は、名前で指定した 2 つの図形を返します。

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

Excel で、ワークシート上にあるすべての Shape オブジェクトを含む ShapeRange オブジェクトを取得する場合、このプロパティは使用できません。 代わりに、次のコードを使用します。

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

次の使用例は、myDocument の図形 1 と図形 3 に塗りつぶしのパターンを設定します。

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

次の使用例は、 myDocument の Oval 4 および Rectangle 5 という名前の図形の塗りつぶしパターンを設定します。

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 に塗りつぶしのパターンを設定します。

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

次の使用例は、myDocument のすべてのオートシェイプを含む配列を作成し、その配列を使用して図形範囲を定義し、次にその範囲内のすべての図形を左右に整列します。

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 
 Next 
 If numAutoShapes > 1 Then 
 ReDim Preserve autoShpArray(1 To numAutoShapes) 
 Set asRange = .Range(autoShpArray) 
 asRange.Distribute msoDistributeHorizontally, False 
 End If 
 End If 
End With

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

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