- ベストアンサー
ExcelVBA オートシェイプについて
セルの選択した場所のとなりにオートシェイプを移動させるマクロを組みたいと思っています 見かけがまったく同じシートが4枚あり、そのシート全てに同じマクロを指定したいのですが、オートシェイプの名前の指定の仕方が分からなく困っています SelectionChangeイベントでオートシェイプ移動のマクロを動かしているので、同じ名前のボタンならよいのですが・・・ なにかよい方法はないでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
シートをコピーしたもので無いと、その後抹消や追加をしない前提で無いと、オートシェイプの名は変わる可能性があります。INDEXで指定しても抹消や追加をしないようにしないと、変わる可能性があります。 それを避けるために、人間が指定することを考えるとしても、セルの選択とオートシェイプの選択を関連付けるのが難しいのでは無いでしょうか。 私は過去の回答で、セルのTOPに1つのOVALのTOPを一致して配置し、同行内であれば、セルのChangeなどで隣セルのLEFTと同行に配置したOVALのLEFTを一致させる移動をする回答をしたことがあります。 Selection/ValuともChaneイベントは扱いにくいし、むつかしい。
その他の回答 (2)
- misatoanna
- ベストアンサー率58% (528/896)
> 同じ名前の付け方が分かりません オートシェイプを選択した状態で、名前ボックス(シート左上のほうに図形名が表示されている)内を クリックして、直接書き込みます。 前回のモジュールは、各シートのオートシェイプごとにここで QQQ という同じ名前をつけたという 前提です。
お礼
できました!ありがとうございました!
- misatoanna
- ベストアンサー率58% (528/896)
> セルの選択した場所のとなりにオートシェイプを移動させる シートごとに、移動させるオートシェイプを選択し名前ボックスで同じ名前をつけられたら いかがでしょうか。 各シートのオートシェイプの名前を QQQ とした場合、ThisWorkbook モジュールに、 Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) Dim T, L T = Target.Offset(0, 1).Top L = Target.Offset(0, 1).Left ActiveSheet.Shapes("QQQ").Top = T ActiveSheet.Shapes("QQQ").Left = L End Sub 解釈を誤っていたら、ごめんなさい。
補足
回答ありがとうございます! しかし・・・同じ名前の付け方が分かりません! 同じ名前のオートシェイプをマクロでも指定しなくてはならないので、どうにかできないでしょうか?
お礼
回答ありがとうございます! やっぱり難しいですね。なんとかやってみます