Sub RemoveEmptyTextBoxes()
Dim SlideObj As Slide
Dim ShapeObj As Shape
Dim ShapeIndex As Integer
For Each SlideObj In ActivePresentation.Slides
For ShapeIndex = SlideObj.Shapes.Count To 1 Step -1
Set ShapeObj = SlideObj.Shapes(ShapeIndex)
If ShapeObj.Type = msoTextBox Then
If Trim(ShapeObj.TextFrame.TextRange.Text) = "" Then
ShapeObj.Delete
End If
End If
Next ShapeIndex
Next SlideObj
End Sub
このコードを実行すると、すべてのスライドに対して処理がループして実行され、テキストを含まないすべてのテキスト ボックスが削除されます。 カウント変数の値は、1 つずつ増えるのではなく減っていきます。コードでオブジェクトを 1 つ削除するたびにコレクションからオブジェクトが削除されるので、カウントが減ります


コメント