• 締切
  • 困ってます

VBA オブジェクトのマウスアップ

  • 質問No.9626157
  • 閲覧数57
  • ありがとう数3
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 72% (174/240)

エクセルで図形を移動したら余分な操作なくセルにフィットさせたいです。
オブジェクトでマウスアップイベントが使えたらいいのですが、無いようです。
いい方法はないでしょうか?
中途半端な案
1.枠線に合わせるを強制する。
 →挿入や移動でセルに合わない時もあるのでNG?(そもそもなぜ合わないの?)
2.図形移動後、別の図形かセルが選択されるのに期待
 →すべてのオブジェクトにonactionを設定
  セルchangeイベントとオブジェクトonactionを使う。
3.フォームを全画面表示、透明化、フォームのマウスアップイベントを使う
 →考えただけでも難易度が高すぎ。

回答 (全3件)

  • 回答No.3

ベストアンサー率 56% (348/617)

他カテゴリのカテゴリマスター
ALTキーを押しながら移動すると、枠線にくっつきますけど、それではだめなんですか?
お礼コメント
tanakanono

お礼率 72% (174/240)

はい。ダメなんです。アドインにして配布したので。
投稿日時:2019/06/17 19:27
  • 回答No.2

ベストアンサー率 61% (219/358)

Excel(エクセル) カテゴリマスター
期待されるイベントはありませんので
私だったら次のようにすると思います。

・適当なイベントでシート上の図形全数の位置をテーブルに格納
 (Workbook_SheetChangeイベントがいいかも)
・フロートなフォーム(UserForm1.Show vbModeless)に
 『現在の図形位置を記憶』
 『近くのセル位置に合わせる』 の2つのボタンを配置
・『現在の図形位置を記憶』が押されたら、
  シート上の図形全数の位置をテーブルに格納
・『近くのセル位置に合わせる』が押されたら
  (1)表示位置の変化した図形を特定
  (2)これら特定された図形たちのみの表示位置を
  一番近くのセル位置に移動し、
  (3)シート上の図形全数の位置をテーブルに格納
都合、
セル位置に合わせたくない図形の場合は
任意位置に移動し、『現在の図形位置を記憶』ボタンを押下し。
セル位置に合わせたい図形の場合は場合は
任意位置に移動し、『近くのセル位置に合わせる』ボタンを押下します。
お礼コメント
tanakanono

お礼率 72% (174/240)

ご提案の方法だと2のほうが良いと思います。
ありがとうございます。
投稿日時:2019/06/17 19:27
  • 回答No.1

ベストアンサー率 28% (4488/15979)

どこまで質問の意図に答えているか不安だが、WEB記事を参考にして
Sheet1にコントロールImage1を貼り付ける。
そしてSheet1のImage1のイベントでMouseMoveを選び
Private Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
’MsgBox "C3に移動"
' 図形の現在の図の位置を取得する
With Sheets("Sheet1").Shapes("Image1")
currTop = Cells(3, 3).Top
currLeft = Cells(3, 3).Left
End With
' 図形の現在の位置を上に移動する
' Top位置を小さくする
With Sheets("Sheet1").Shapes("Image1")
.Top = currTop
.Left = currLeft
End With
End Sub
これでデザインモードを脱して、
シートのImage1の上をMouseで動かすと、上記では、セルC3左上位置に移動する。
これだけでは、何ということはないので、どういう(場面で)使い方をするか疑問だが。
お礼コメント
tanakanono

お礼率 72% (174/240)

ActiveXを使うのもいいかもしれません。考えてみます。
やりたいことは、アドインでいろいろなことをしているうちの一つに、特定のファイルの場合に図形を配置、移動したら枠線に合わせたいです。
ユーザーは普段通りセル入力などができるのが理想です。
図形の座標をセル位置でデータ化してごにょごにょします。
投稿日時:2019/06/16 07:19
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ