パワーポイント VBAで複数の図形を扱うメモ
以前,当たり判定を作るときに複数の図形を選んだりするのをやってたんですが,
今回それをすっかり忘れてしばらく格闘していたので,その部分のメモ。
該当する部分は,
Dim arr As String For i = 1 To 粒子数 arr = arr & vbTab & 粒子(i).Name Next With TargetSlide.Shapes.Range(Split(arr, vbTab)).Group .Name = "原子核" End With
ここです。Shapes.Range()の中に図形のインデックスか図形の名前の配列を放り込まないといけないみたいですが,スマートに書く方法を思いつけませんでした。
図形のインデックスはちょっと制御するのが難しいので,ここでは名前を利用しています。
だいぶ配列等を使う機会は増えたんですが,Shapes.Range()の中にいろいろな形式で放り込んでみて,上記以外の方法は怒られてしまい,達成できませんでした。
arr(0),arr(1),arr(2)とかにShapeを放り込んで入れてarrを放り込んでも怒られました。
ループを使って複数の図形をうまいことShapes.Range()の中に入れる方法を知りたい。
上の例は,最終的にそれなりに気に入ってますし,Splitは大好きだからいいんですが,Splitで入れれるなら,配列でもいけそうなのにな。
Array関数とかまだまだ弱いんですよね。。( ´ー`)フゥー...
--追記--
お風呂入って考えて,もう一度いろいろ調べてみました。
Shapeオブジェクトを放り込もうとしたらやっぱり怒られましたが,
このように指摘がありました。このエラーメッセージは親切だ,これならなんとなくわかるなぁと考え直して,
Sub a() Dim TargetSlide As Slide: Set TargetSlide = ActivePresentation.Slides(1) Dim ShapeName(1 To 3) As String, i As Long For i = 1 To 3 ShapeName(i) = "shp" & i Next TargetSlide.Shapes.Range(ShapeName).Group End Sub
コウイウコトカ! d(゚ー゚d(゚ー゚)b゚ー゚)b