回答編集履歴
1
イベントの動作について補足。
answer
CHANGED
@@ -4,13 +4,17 @@
|
|
4
4
|
|
5
5
|
あとはマウスのボタンが放されたときに、その位置を元にセルを取得できれば良さそうということになります。
|
6
6
|
|
7
|
-
ListBoxなどには、[MouseDown、MouseUp イベント](https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/mousedown-mouseup-events)があ
|
7
|
+
ListBoxなどには、[MouseDown、MouseUp イベント](https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/mousedown-mouseup-events)があります。
|
8
|
+
このイベントはドラッグ開始点がそのコントロール上であれば、コントロール外でボタンを放したとしてもその時点でMouseUpイベントが発生します。
|
9
|
+
そのため、これでマウスのボタンが放されたタイミングも捕捉できます。
|
10
|
+
もう一つ必要な情報のマウスの位置ですが、こちらはMouse関連のイベントだけでは取得がちょっと難しいです。
|
11
|
+
イベントの引数のX、Yはありますが、これら相対位置になるので、絶対位置への変換&画面上への座標系の変換が必要になります。
|
8
12
|
|
9
|
-
|
13
|
+
とりあえず最低限必要そうな部品は以上になります。
|
10
|
-
イベントの引数のX、Yは相対位置になるので、絶対位置への変換&画面上への座標系の変換が必要になります。
|
11
14
|
|
12
|
-
これらを踏まえて実装してみたのが以下のコードになります。
|
13
15
|
|
16
|
+
上記のことを踏まえて私が適当に実装してみたのが以下のコードになります。
|
17
|
+
|
14
18
|
リストボックスの名前は`ListBox1`としています。
|
15
19
|
|
16
20
|
```vba
|
@@ -112,4 +116,6 @@
|
|
112
116
|
|
113
117
|
Let mouseEventIsOnForm = True
|
114
118
|
End Function
|
115
|
-
```
|
119
|
+
```
|
120
|
+
|
121
|
+
一部挙動が微妙なところはありますが、恐らくイメージに近いものだと思われます。
|