Excel VBA質問箱 IV

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

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


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

【45298】オートシェイプの貼り付け すぎぽん 06/12/18(月) 15:07 質問[未読]
【45300】Re:オートシェイプの貼り付け Kein 06/12/18(月) 15:33 発言[未読]
【45302】Re:オートシェイプの貼り付け すぎぽん 06/12/18(月) 15:54 発言[未読]
【45305】Re:オートシェイプの貼り付け Kein 06/12/18(月) 18:20 発言[未読]
【45318】Re:オートシェイプの貼り付け すぎぽん 06/12/19(火) 9:09 お礼[未読]

【45298】オートシェイプの貼り付け
質問  すぎぽん  - 06/12/18(月) 15:07 -

引用なし
パスワード
   ワークシート上にオートシェイプを貼り付けるマクロを作成したいのですが、ユーザーに作成する位置をマウスで指定させるマクロはできますか?
初心者なもので・・
皆様、どうかよろしくお願いいたします。

【45300】Re:オートシェイプの貼り付け
発言  Kein  - 06/12/18(月) 15:33 -

引用なし
パスワード
   たくさんサンプルを書いてます。例えば最近では
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=44861;id=excel
(↑先頭の4文字を半角に変更して下さい)
その他、検索のキーワードに "Lp Tp Wp Hp" と半角スペースで区切って入力
すれば、私の書いたレスがヒットします。

【45302】Re:オートシェイプの貼り付け
発言  すぎぽん  - 06/12/18(月) 15:54 -

引用なし
パスワード
   ▼Kein さん:
>たくさんサンプルを書いてます。例えば最近では
>http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=44861;id=excel
>(↑先頭の4文字を半角に変更して下さい)
>その他、検索のキーワードに "Lp Tp Wp Hp" と半角スペースで区切って入力
>すれば、私の書いたレスがヒットします。

早速の回答、ありがとうございます。
ただ、オートシェイプだとセルを無視した形で貼り付けで切ると思うのですが、
マウスの指定先にオートシェイプを貼り付けることは可能でしょうか?

【45305】Re:オートシェイプの貼り付け
発言  Kein  - 06/12/18(月) 18:20 -

引用なし
パスワード
   途中までコードを書いてましたが、残念ながら保存する前に落ちてしまいました。
で、マウスの位置を取得するには Win32API を使います。

Type POINTAPI
  x As Long
  y As Long
End Type

'現在のマウスカーソルの位置座標を取得する
Declare Function GetCursorPos Lib "user32"(lpPoint As POINTAPI) As Long
Dim MoP As POINTAPI       '現在のマウスポインタの位置座標

Sub CursorP()
  GetCursorPos MoP
  'その位置を表示
  MsgBox "マウス座標 X=" & MoP.x & " Y=" & MoP.y
End Sub

取得できるのはピクセル値ですから、図形などで使えるようにポイント値に
換算する必要があります。これは簡単で 0.75 をかけるだけです。
手順としては、マクロ実行後まずオートシェイプを挿入し、メッセージを出して
マウスを任意の位置へ持っていって ENTER を押すように促す。そうすることで
マウスから手を離しても次のコードが実行できるわけだから、APIで取得・換算
した位置へ図形を移動すれば良い。というわけです。
以上をヒントにして、自分でコーディングしてみて下さい。

【45318】Re:オートシェイプの貼り付け
お礼  すぎぽん  - 06/12/19(火) 9:09 -

引用なし
パスワード
   Keinさん
解決しました。
ありがとうございました。

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