拙著『いちばんやさしいPowerPoint VBAの教本』のP.096でお伝えした、何らかのオブジェクトがコレクションであるかを判断するには、For Each~Next文で処理できることを確認する必要がある件の補足記事を書きました。
拙著では簡単に触れるに留めている、アクティブスライド等を操作するときなどに利用するSlideRangeオブジェクトや、選択されている図形を操作する際に利用するShapeRangeオブジェクトも、コレクションでもあるオブジェクトですから、やはりFor Each~Next文で処理できます。
SlideRangeがコレクションであることを確認する
スライドが最低でも1枚は選択された状態で、以下のSubプロシージャを実行してみてください(スライドが選択状態になければ実行時エラーが発生します)。Dim itm As Variant
For Each itm In ActiveWindow.Selection.SlideRange
Next
End Sub
実行時エラーが発生することなく、For Each~Nextループで処理でき、Selectionオブジェクトに用意されているSlideRangeプロパティで取得できる、
SlideRangeオブジェクトがコレクションであることを実証できます。
For Each~Next文のステップ実行中にローカルウィンドウを表示すれば、SlideRangeコレクションからFor Each~Next文で順番に取得できる単独のオブジェクトが、Slideオブジェクトであることも確認できます。
SlideRangeがコレクションであることを確認する
いずれかのスライドで、図形が最低でも1個は選択された状態で、以下のSubプロシージャを実行してみてください(図形が選択状態になければ実行時エラーが発生します)。Dim itm As Variant
For Each itm In ActiveWindow.Selection.ShapeRange
Next
End Sub
実行時エラーが発生することなく、For Each~Nextループで処理でき、Selectionオブジェクトに用意されているShapeRangeプロパティで取得できる、
ShapeRangeオブジェクトがコレクションであることを実証できます。
For Each~Next文のステップ実行中にローカルウィンドウを表示すれば、ShapeRangeコレクションからFor Each~Next文で順番に取得できる単独のオブジェクトが、Shapeオブジェクトであることも確認できます。
コレクションとはどのようなオブジェクトかをイメージしましょう
自分の手を動かして、自分の目で上記の挙動を観察して、拙著のLesson 10なども参考にしつつ、(Presentations・Slides・Shapesも含めて)コレクションとはどのような特徴を持ったオブジェクトなのか、あらためてイメージしてみてください。
そのようなコレクションのイメージは、PowerPoint VBAに限らず、Excel VBAやAccess VBAでも共通します。
最終更新日時:2020-06-04 17:06
Home » いちばんやさしいPowerPoint VBAの教本 » SlideRange・ShapeRangeもFor Each~Nextで確認を