Access を本来の用途で使用していません。私もそうではないです。 :)
モジュールの先頭にある宣言に次を追加してみてください。
Declare Function SetWindowPos Lib "user32.dll" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal ClassName As String, ByVal WindowName As String) As Long
次に、VBE を変更する関数を呼び出すコマンド ボタンに以下を追加します。
Application.Echo False
SetWindowPos FindWindow("wndclass_desked_gsk", Application.VBE.MainWindow.Caption), 0&, 0&, 2000&, 1, 1, &H80 Or &H1
<run your code that calls the VBE>
Application.VBE.MainWindow.Visible = False
Application.Echo True
これにより、最初にAccessが画面の変更を表示するのを停止し、VBEウィンドウがまだバックグラウンドに隠れている間にVBEウィンドウを画面から移動し、コードを実行し、ウィンドウが画面から外れるとウィンドウを非表示にしてから、更新された画面を次のように再度表示します正常。VBE は画面外にあり、タスクバーやデスクトップの表示からも隠されています。
さて、VBE ウィンドウを画面の外に移動するのは明らかに不正行為です... しかし、私のクライアントは私が不正行為をするかどうか気にしません。
このコードを使用してから予期しないエラーをデバッグする必要がある場合、これは煩わしい (またはさらに悪い) 可能性があります。また、データベース間であっても、閉じるときに Access がこのウィンドウの位置を保存することがありますが、これは望ましくありません。注意して使用するか、十分な時間をかけてください。
インターネットでは、次の方法も役立つはずだと言われていますが、Access 2016 では機能しませんでした。
LockWindowUpdate FindWindow("wndclass_desked_gsk", Application.VBE.MainWindow.Caption)
の宣言をどうにかして紛失しましたLockWindowUpdate
が、きっと見つかるはずです。どうせチップ・ピアソンか何かから盗んだのだろう。