Shapes.Range メソッド (PowerPoint)
Shapes コレクションの図形のサブセットを表す ShapeRange オブジェクトを返します。
構文
式。範囲 (インデックス)
表現Shapes オブジェクトを表す変数です。
パラメーター
名前 | 必須 / オプション | データ型 | 説明 |
---|---|---|---|
Index | 省略可能 | バリアント型 (Variant) | 範囲に含まれる個々 の図形です。 図形のインデックス番号を指定する 整数 図形の名前を指定する 文字列 または整数か文字列を含む配列を指定できます。 この引数を省略すると、 Range メソッドは、指定されたコレクション内のすべてのオブジェクトを返します。 |
戻り値
ShapeRange
注釈
図形やスライドの数を取得する Range メソッドを使用できますが、コレクションの単一のメンバーを取得する場合は、 Item メソッドを使用するが簡単です。 たとえば、 Shapes(1)
は より Shapes.Range(1)
単純で、 Slides(2)
よりも単純です Slides.Range(2)
。
Index に整数または文字列の配列を指定するには、 Array 関数を使用します。 たとえば、次の命令は、名前で指定した 2 つの図形を返します。
Dim myArray() As Variant, myRange As Object myArray = Array("Oval 4", "Rectangle 5") Set myRange = ActivePresentation.Slides(1).Shapes.Range(myArray)
例
次の使用例は、myDocument の図形 1 と図形 3 に塗りつぶしのパターンを設定します。
Set myDocument = ActivePresentation.Slides(1)
myDocument.Shapes.Range(Array(1, 3)).Fill _
.Patterned msoPatternHorizontalBrick
次の使用例は、スライド 1 の "楕円 4" と "四角形 5" という名前の図形に塗りつぶしのパターンを設定します。
Dim myArray() As Variant, myRange As Object
myArray = Array("Oval 4", "Rectangle 5")
Set myRange = ActivePresentation.Slides(1).Shapes.Range(myArray)
myRange.Fill.Patterned msoPatternHorizontalBrick
次の使用例は、スライド 1 のすべての図形に塗りつぶしのパターンを設定します。
ActivePresentation.Slides(1).Shapes.Range.Fill _
.Patterned Pattern:=msoPatternHorizontalBrick
次の使用例は、スライド 1 の図形 1 に塗りつぶしのパターンを設定します。
Set myDocument = ActivePresentation.Slides(1)
Set myRange = myDocument.Shapes.Range(1)
myRange.Fill.Patterned msoPatternHorizontalBrick
次の使用例は、スライド 1 にすべてのオートシェイプを含む配列を作成し、その配列を使用して図形範囲を定義し、次にその範囲内のすべての図形を左右に整列します。
With myDocument.Shapes
numShapes = .Count
'Continues if there are shapes on the slide
If numShapes > 1 Then
numAutoShapes = 0
ReDim autoShpArray(1 To numShapes)
For i = 1 To numShapes
'Counts the number of AutoShapes on the Slide
If .Item(i).Type = msoAutoShape Then
numAutoShapes = numAutoShapes + 1
autoShpArray(numAutoShapes) = .Item(i).Name
End If
Next
'Adds AutoShapes to ShapeRange
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 のサポートおよびフィードバックを参照してください。