teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2020/11/11 04:48

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,3 +1,14 @@
1
1
  画面を移動できなくするなら、「移動可能」プロパティ=「いいえ」とするだけで済みます。
2
2
 
3
- 画面移動を許容しつつ、特定の位置に表示するなら、フォームの「[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)で移動する方法が考えられます。
3
+ 画面移動を許容しつつ、特定の位置に表示するなら、フォームの「[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)で移動する方法が考えられます。
4
+
5
+ > 画面は移動出来たままにしたいです
6
+ > timerintervalも考えましたがフォームが画面外に出た時のみに位置の修正が入るようにしたいんです。
7
+ > 画面内であれば場所はどこにでも置いてても良いけど、隠すのはダメ、という感じが良くて。。
8
+ > フォームが移動された時などに、位置を取得→指定した範囲より外に出た場合にエラーを出して画面内に強制的に移動させる というのは厳しいでしょうか。
9
+
10
+ フォームにLocationChangedやMoveイベントがあればいいのですが無さそうなので、タイマーで監視するしかない気がします。
11
+
12
+ 現在位置の取得は、以下辺りを参考に。(エクセルフォームですけど、違いはハンドルだけだと思います)
13
+ [指定したウィンドウの位置、サイズを取得する](https://www.moug.net/tech/acvba/0020032.html)
14
+ [ユーザーフォーム表示位置の制御](http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_100_120.html)