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 のサポートおよびフィードバックを参照してください。