Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Shapesコレクション・Shapeオブジェクト » 最背面の図形を削除するPowerPointマクロ

対象:PowerPoint2007, PowerPoint2010, PowerPoint2013, Windows版PowerPoint2016

「マクロ 一番背後にあるpowerpointのシェイプを削除する」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

PowerPointのスライド上で複数の図形が重なっているときに、最背面にある図形をVBA(Visual Basic for Applications)を使って削除するには、どのようなコードを書けばいいのかを探している方による検索でしょうか。

[スポンサードリンク]

選択されている図形から最背面のものを削除するサンプルマクロ

以下のようなマクロで、選択されている図形のうち、最背面の図形だけを削除できます。

Sub 最背面の図形を削除する()

 Dim arr() As Long ' ShapeのZOrderPosition
 Dim shp As Shape
 Dim n As Long, i As Long

 With ActiveWindow.Selection
  If .Type <> ppSelectionShapes Then Exit Sub
  With .ShapeRange
   ' ZOrderPositionを配列に格納
   n = .Count
   If n = 1 Then Exit Sub
   ReDim arr(1 To n)
   For i = 1 To n
    arr(i) = .Item(i).ZOrderPosition
   Next i
   ' ZOrderPositionが最小のShapeを削除
   For i = 1 To n
    If .Item(i).ZOrderPosition = min(arr) Then
     .Item(i).Delete
     Exit For
    End If
   Next i
  End With
 End With

End Sub


Function min(arr As Variant) As Double
' 配列データの最小値を返す

 Dim i As Long
 
 min = arr(LBound(arr))
 For i = LBound(arr) To UBound(arr)
  If arr(i) < min Then min = arr(i)
 Next i

End Function

サンプルマクロの解説

Shapeが前面にいるのか背面にいるのかは、ZOrderPositionプロパティを調べるとわかります。ZOrderPositionが小さいほど背面に、大きいほど前面に存在しています。

つまり、選択されているShapeのZOrderPositonの一番小さいものが、最背面に存在していることになります。

上記マクロの、
 With ActiveWindow.Selection
  With .ShapeRange
   n = .Count
   ReDim arr(1 To n)
   For i = 1 To n
    arr(i) = .Item(i).ZOrderPosition
   Next i
が、最背面の図形を調べるために、各ShapeのZOrderPositionの値を、配列へ格納している部分です。

配列にZOrderPositionの値を格納してから、もう一度For~Nextループを回して、
   For i = 1 To n

最小値のZOrderPositionを持つShapeだったときに削除をしています。
    If .Item(i).ZOrderPosition = min(arr) Then
     .Item(i).Delete

ここでは、配列に格納されているデータの最小値を返すFunctionプロシージャを別に用意しました。

エラー回避のために、選択されているのが図形でなかった場合にマクロを終了しています。
 With ActiveWindow.Selection
  If .Type <> ppSelectionShapes Then Exit Sub

また、図形が一つだけされている場合には、削除を実行しないほうが良さそうに感じますので、選択されている図形の数が「1」だったときにもマクロを終了しています。
  With .ShapeRange
   n = .Count
   If n = 1 Then Exit Sub

[スポンサードリンク]

Home » パワーポイントマクロ・PowerPoint VBAの使い方 » Shapesコレクション・Shapeオブジェクト » 最背面の図形を削除するPowerPointマクロ

「Shapesコレクション・Shapeオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.