Excel VBA質問箱 IV

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

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


33938 / 76738 ←次へ | 前へ→

【48015】Re:オートシェイプにマクロを登録…
お礼  toshi  - 07/3/30(金) 15:22 -

引用なし
パスワード
   ▼りん さん:
こんにちわ
わがままな質問に答えていただきありがとうございました。
思い通りの動きです。
感激です。
また、お願いします。

>Sub test()
>  Dim sh1 As Shape, sh2 As Shape, sh3 As Shape, ws As Worksheet
>  Set ws = Application.ActiveSheet
>  '
>  If TypeName(Application.Caller) = "String" Then
>   'クリックされた図形をセットします
>   Set sh1 = ws.Shapes(Application.Caller)
>   '
>   For Each sh2 In ws.Shapes
>     If sh2.Name = "Line_" & sh1.Name Then
>      Exit For
>     End If
>   Next
>   If sh2 Is Nothing Then
>     'その図形の位置を基準に線(終点↑)を引きます
>     With sh1
>      'AddLineの引数の意味はヘルプで見てね
>      Set sh3 = ws.Shapes.AddLine(.Left + .Width / 2, .Top, .Left + .Width / 2, .Top - .Height)
>      With sh3
>        .Line.EndArrowheadLength = msoArrowheadLong
>        .Line.EndArrowheadWidth = msoArrowheadWide
>        .Line.EndArrowheadStyle = msoArrowheadStealth
>      End With
>      '
>      sh3.Name = "Line_" & sh1.Name '関連する名前を付けたら判定が楽かなあ
>     End With
>   Else
>     sh2.Delete
>   End If
>  Else
>   MsgBox "Clickで呼んでいない" '直接実行するとエラーになるので除外
>  End If
>  '
>  Set sh1 = Nothing: Set sh2 = Nothing: Set sh3 = Nothing
>  Set ws = Nothing
>End Sub
>
>これでどうでしょう?
>複数の線を引く→消す場合は、あるかないかを判定後、消去もループで処理します。
>また、表示を切り替えるだけなら、削除ではなくVisibleで切り替える方がいいと思います。

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 お礼

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