回答編集履歴

1

追記

2020/11/11 04:48

投稿

sazi
sazi

スコア25327

test CHANGED
@@ -3,3 +3,25 @@
3
3
 
4
4
 
5
5
  画面移動を許容しつつ、特定の位置に表示するなら、フォームの「[TimerInterval](https://support.microsoft.com/ja-jp/office/-timerinterval-%E3%82%BF%E3%82%A4%E3%83%9E%E3%83%BC%E9%96%93%E9%9A%94-%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3-9732dbbb-3f6f-4eb7-995d-b695f3d9d4b8)」を設定し、一定間隔で、特定の表示位置に[DoCmd.MoveSize](https://docs.microsoft.com/ja-jp/office/vba/api/access.docmd.movesize)で移動する方法が考えられます。
6
+
7
+
8
+
9
+ > 画面は移動出来たままにしたいです
10
+
11
+ > timerintervalも考えましたがフォームが画面外に出た時のみに位置の修正が入るようにしたいんです。
12
+
13
+ > 画面内であれば場所はどこにでも置いてても良いけど、隠すのはダメ、という感じが良くて。。
14
+
15
+ > フォームが移動された時などに、位置を取得→指定した範囲より外に出た場合にエラーを出して画面内に強制的に移動させる というのは厳しいでしょうか。
16
+
17
+
18
+
19
+ フォームにLocationChangedやMoveイベントがあればいいのですが無さそうなので、タイマーで監視するしかない気がします。
20
+
21
+
22
+
23
+ 現在位置の取得は、以下辺りを参考に。(エクセルフォームですけど、違いはハンドルだけだと思います)
24
+
25
+ [指定したウィンドウの位置、サイズを取得する](https://www.moug.net/tech/acvba/0020032.html)
26
+
27
+ [ユーザーフォーム表示位置の制御](http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_100_120.html)