次の方法で共有


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


関連項目

Shapes オブジェクト

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

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