DBとして機能するExcelファイルがあります。 Excelファイルのデータをソートして変更した後、更新されたデータをPowerPointスライドにコピーしています。 更新されたワークシートからすべてのチャートオブジェクトをコピーする前に、PowerPointスライドから古いグラフを削除します。Excel VBAからPowerPointスライド内のすべてのチャートオブジェクトを削除しようとするとエラーが発生する
私は以下のコードを使用していますが、スライドの最後のチャートを削除しようとすると、エラーメッセージが表示されます。 エラーメッセージは "Shapes.Item:整数が範囲外です.25はインデックスの有効範囲1〜24ではありません"です。あなたがそれらの一つ以上を削除することを意図してVBAでオブジェクトのコレクションをループしているときはいつでも
Dim SlideNum, i As Integer
SlideNum = ActiveSheet.Cells(5, 2)
For i = 1 To PPT.ActivePresentation.Slides(SlideNum).Shapes.Count
' if current slide object is a chart, delete it
If PPT.ActivePresentation.Slides(SlideNum).Shapes.Item(i).HasChart Then
PPT.ActivePresentation.Slides(SlideNum).Shapes.Item(i).Delete
End If
Next i
'i'で後方にカウントしますが、前方にカウントしません。先に進むと、ある時点でシェイプを削除すると、 'i'はスライド上のシェイプの数よりも大きくなります(シェイプをループするときに' Shapes.Count'は再評価されません)。 –
変数を宣言することの良い習慣は、〜DIM SlideNum As Integer、i As Integer〜 – skkakkar