Excel VBA質問箱 IV

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

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


33957 / 76738 ←次へ | 前へ→

【47996】Re:オートシェイプにマクロを登録…
回答  りん E-MAIL  - 07/3/29(木) 14:45 -

引用なし
パスワード
   初心者 さん、こんにちわ。

>その四角オートシェイプをコピーでもう1ヶ所に作り、2個目の四角オートシェイプを押すと1個目の四角オートシェイプの所に直線オートシェイプが出てくるのですが、2個目の四角オートシェイプの所に出てくるようにする事は可能なのでしょうか?

Application.Callerでどの図形から呼ばれたものかを分岐します。
Sub test()
  Dim sh1 As Shape, sh2 As Shape, ws As Worksheet
  Set ws = Application.ActiveSheet
  '
  If TypeName(Application.Caller) = "String" Then
   'クリックされた図形をセットします
   Set sh1 = ws.Shapes(Application.Caller)
   'その図形の位置を基準に線(終点→)を引きます
   With sh1
     With ws.Shapes.AddLine(.Left + .Width, .Top + .Height \ 2, .Left + .Width * 2, .Top + .Height \ 2)
      .Line.EndArrowheadLength = msoArrowheadLong
      .Line.EndArrowheadWidth = msoArrowheadWide
      .Line.EndArrowheadStyle = msoArrowheadStealth
     End With
   End With
  Else
   MsgBox "Clickで呼んでいない" '直接実行するとエラーになるので除外
  End If
  '
  Set sh1 = Nothing: Set sh2 = Nothing
  Set ws = Nothing
End Sub
こんな感じです。
分岐方法の詳細はCallerプロパティのヘルプを見てください。

四角形から横方向に→を出すマクロです。
オートシェイプの四角形をシートに置き、マクロを登録します。
その登録後の四角形をいろんなところにコピーしてクリックしてみてください。
0 hits

【47993】オートシェイプにマクロを登録… 初心者 07/3/29(木) 14:08 質問
【47996】Re:オートシェイプにマクロを登録… りん 07/3/29(木) 14:45 回答
【47997】Re:オートシェイプにマクロを登録… 初心者 07/3/29(木) 15:07 お礼
【48000】Re:オートシェイプにマクロを登録… 初心者 07/3/29(木) 16:22 質問
【48006】Re:オートシェイプにマクロを登録… りん 07/3/29(木) 22:02 回答
【48007】Re:オートシェイプにマクロを登録… toshi 07/3/30(金) 0:48 発言
【48008】Re:オートシェイプにマクロを登録… りん 07/3/30(金) 8:35 回答
【48009】Re:オートシェイプにマクロを登録… 初心者 07/3/30(金) 8:44 お礼
【48015】Re:オートシェイプにマクロを登録… toshi 07/3/30(金) 15:22 お礼

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