- ベストアンサー
オートシェイプの位置
エクセルですが。 セレクトされているオートシェイプを所定の位置に配置するマクロとして、以下は動作するのですが。 Selection.ShapeRange.Left = 250 Selection.ShapeRange.Top = 100 名前ボックスからオートシェイプの名前を aaa に変更し、以下のマクロを実行すると、いずれもエラーになってしまいます。 aaa.ShapeRange.Left = 250 aaa.ShapeRange.Top = 100 aaa.Left = 250 aaa.Top = 100 どこが間違っているのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1でご回答のように、名前だけでは動きませんね。 コレクションの中の一員として、その名前を指定すると言うイメージでしょうか。 ○○のコレクション名(名前) か ○○のコレクション名(インデックス番号) ただし http://homepage2.nifty.com/kasayan/vba/excel95tip.htm にあるように、エクセルシートなどでは 「EXCEL2000では、上記の記述の仕方でもO.K.ですが、Sheet1のように固有のオブジェクト名(nameプロパティ)を直接記述していくことが可能です」 とか Sub test01() Worksheets("Sheet1").TextBox1.Font.Size = 13 End Sub のTextbox1 というのもあり、ややこしい。 その他参考 http://hp.vector.co.jp/authors/VA016119/excel/vbafaq02.html
その他の回答 (1)
- papayuka
- ベストアンサー率45% (1388/3066)
詳しい知識はありませんけど、Sheet1のシート名を「aaa」に変えて aaa.Select が動かないのと同じで、ここでの名前は単なるプロパティであってオブジェクトでは無いからだと思います。 ActiveSheet.Shapes("aaa").Left = 0 ActiveSheet.Shapes("aaa").Top = 100 とか Dim sh As Shape Set sh = ActiveSheet.Shapes("aaa") sh.Left = 40: sh.Top = 40 とか
お礼
ありがとうございました。 解決いたしました。
お礼
ありがとうございました。 解決いたしました。