Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5248 / 13646 ツリー ←次へ | 前へ→

【51921】オートシェイプのセレクト 太郎 07/10/11(木) 23:28 質問[未読]
【51924】Re:オートシェイプのセレクト りん 07/10/12(金) 5:50 回答[未読]
【51928】Re:オートシェイプのセレクト mizunu 07/10/12(金) 9:40 回答[未読]
【51938】Re:オートシェイプのセレクト 太郎 07/10/12(金) 13:55 お礼[未読]

【51921】オートシェイプのセレクト
質問  太郎  - 07/10/11(木) 23:28 -

引用なし
パスワード
   こんばんわ
シート上に作ったオートシェイプにマクロを登録するマクロを
作りたいです。「マクロの記録」を使い
マクロを登録するには
Selection.OnAction = "TEST"
と記述すれば良いのは分かりましたが
それ以前にオートシェイプをセレクトする方法が分かりません。
知ってる方いらっしゃいましたら教えてください。

【51924】Re:オートシェイプのセレクト
回答  りん E-MAIL  - 07/10/12(金) 5:50 -

引用なし
パスワード
   太郎 さん、おはようございます。

>シート上に作ったオートシェイプにマクロを登録するマクロを
>作りたいです。
>Selection.OnAction = "TEST"


アクティブなシート上のオートシェイプ(楕円)にマクロをのせる例です。
Sub Macro1()
  Dim sh As Shape
  For Each sh In ActiveSheet.Shapes
   'オートシェイプ
   If sh.Type = msoAutoShape Then
     '楕円
     If sh.AutoShapeType = msoShapeOval Then
      sh.OnAction = "TEST"
     End If
   End If
  Next
End Sub

こんな感じです。
四角形にのせる場合は、msoShapeOval → msoShapeRectangle です。
複数あるうちの一つにのせる場合は、セルの位置やテキストの文字列で判断するのがいいかと思います。

【51928】Re:オートシェイプのセレクト
回答  mizunu  - 07/10/12(金) 9:40 -

引用なし
パスワード
   >シート上に作ったオートシェイプにマクロを登録するマクロを
>作りたいです

>それ以前にオートシェイプをセレクトする方法が分かりません。

セレクトする必要はありませんが、
そのオートシェイプを特定する必要があります。
マクロでオートシェイプを作るのなら
 With ActiveSheet.Shapes.AddShape(msoShapeOval, 150, 50, 30, 20)
  .OnAction = "test"
 End With

すでに作ってあるあるオートシェイプなら
そのオートシェイプの名前が("楕円 1"として、 
 ActiveSheet.Shapes("楕円 1").OnAction = "test"

【51938】Re:オートシェイプのセレクト
お礼  太郎  - 07/10/12(金) 13:55 -

引用なし
パスワード
   りんさん
mizunuさん
返信ありがとうございます。
大変参考になりました。

同じ形のオートシェイプがたくさんありますので
クリックして普段セルの番号が表示されているところに
出た名前を使いました。

ActiveSheet.Shapes("角丸四角形 181").OnAction = "テスト"

このマクロで無事オートシェイプにマクロの登録をする事ができました。
本当にありがとうございました。

5248 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free