アクセス2007です。
フォームのプロパティで「自動中央寄せ」を「はい」にして
Private Sub Form_Load()
DoCmd.RunCommand 10
DoCmd.ShowToolbar "Ribbon", acToolbarNo 'リボンを非表示にする
Application.CommandBars("Status Bar").Visible = False 'ステータスバーを非表示にする
'ナビゲーションウィンドウを表示しない
DoCmd.SelectObject acForm, "", True
DoCmd.RunCommand acCmdWindowHide
End Sub
をすると、真ん中に表示されません。
ナビゲーションウィンドウ分だけ左に寄ってしまいます。
Private Sub Form_Load()
'ナビゲーションウィンドウを表示しない
DoCmd.SelectObject acForm, "", True
DoCmd.RunCommand acCmdWindowHide
DoCmd.RunCommand 10
DoCmd.ShowToolbar "Ribbon", acToolbarNo 'リボンを非表示にする
Application.CommandBars("Status Bar").Visible = False 'ステータスバーを非表示にする
End Sub
のように順番を前後させても結果は同じです。
真ん中表示だけでなく、アプリケーションを最大化しつつ
リボン・ステータスバーを非表示に事は不可能でしょうか?
No.3ベストアンサー
- 回答日時:
後出しすみません(汗)
手持ちのMDBファイルからコードのコピーだけして、そのまま回答し忘れていました(汗)
どの部分をどちらのサイトを参考にした、とかは忘れてしまっていますが(汗)、コメントで
残していたURLともども、ご紹介しておきます。
※WindowsAPI関数のスコープが「Public」になっていますが、TakeWindowCenter関数と
同じモジュールに記述すれば「Private」でも問題ありません。
(TakeWindowCenter関数だけはPublic必須)
'=====以下、当該フォーム=====
Private Sub Form_Load()
DoCmd.RunCommand acCmdAppMaximize
DoCmd.ShowToolbar "Ribbon", acToolbarNo
Application.CommandBars("Status Bar").Visible = False
DoCmd.SelectObject acForm, "", True
DoCmd.RunCommand acCmdWindowHide
Call TakeWindowCenter(Me.Form)
End Sub
'=====以下、標準モジュール=====
'http://www.ruriplus.com/msaccess/faq/faq_053.html
'http://www.moug.net/tech/acvba/0020033.htm
'http://msdn.microsoft.com/ja-jp/library/cc429812 …
'http://support.microsoft.com/kb/88922/ja
'http://delfusa.main.jp/delfusafloor/technic/tech …
'http://support.microsoft.com/kb/210590/ja
'http://homepage1.nifty.com/rucio/main/Samples/vb …
Public Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Public Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
Public Declare Function ReleaseDC Lib "user32" (ByVal hWnd As Long, ByVal hdc As Long) As Long
Public Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
Public Declare Function MoveWindow Lib "user32" _
(ByVal hWnd As Long, ByVal x As Long, ByVal y As Long, _
ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
Private Const nTwipsPerInch = 1440, WU_LOGPIXELSX As Long = 88, WU_LOGPIXELSY As Long = 90
Public Function TakeWindowCenter(Frm As Form, Optional AdjustUpDown As Long = 0) As Boolean
On Error GoTo エラー処理
Dim Rsl As Boolean, MyX As Long, MyY As Long, MyW As Long, MyH As Long
Const PrcName As String = "TakeWindowCenter"
Const SM_CXSCREEN As Long = 0, SM_CYSCREEN As Long = 1
With Frm
MyW = ConvertTwipToPixels(.WindowWidth, False)
MyX = (GetSystemMetrics(SM_CXSCREEN) - MyW) / 2
MyH = ConvertTwipToPixels(.WindowHeight, True)
'高さは若干上にしたかったため、「2」ではなく「3」としています。
MyY = (GetSystemMetrics(SM_CYSCREEN) - MyH) / 3
'引数「AdjustUpDown」は上下位置の微妙な修正用です。
'(複数のポップアップフォームの同時展開時などに使用)
If AdjustUpDown Then MyY = MyY + ConvertTwipToPixels(AdjustUpDown, True)
Rsl = MoveWindow(.hWnd, MyX, MyY, MyW, MyH, True)
End With
終了処理:
TakeWindowCenter = Rsl
Exit Function
エラー処理:
Rsl = False
MsgBox Err.Number & ":" & Err.Description, vbCritical, PrcName
Resume 終了処理
End Function
Public Function ConvertTwipToPixels(lngTwips As Long, AsHeight As Boolean) As Long
On Error GoTo エラー処理
Dim Rsl As Long, lngDC As Long, lngPixelsPerInch As Long
Const PrcName As String = "ConvertTwipsToPixels"
lngDC = GetDC(0)
Select Case AsHeight
Case True: lngPixelsPerInch = GetDeviceCaps(lngDC, WU_LOGPIXELSY)
Case Else: lngPixelsPerInch = GetDeviceCaps(lngDC, WU_LOGPIXELSX)
End Select
lngDC = ReleaseDC(0, lngDC)
Rsl = (lngTwips * lngPixelsPerInch) / nTwipsPerInch
終了処理:
ConvertTwipToPixels = Rsl: Exit Function
エラー処理:
Rsl = 0
MsgBox Err.Number & ":" & Err.Description, vbCritical, PrcName
Resume 終了処理
End Function
No.2
- 回答日時:
無理なのかどうかは不明です。
『私には判らなかった』という事です。ハイ。
もし、隣のマシンとかでも常に中央に・・という事でしたら
以前の回答が少しは役に立つかも?
http://oshiete.goo.ne.jp/qa/7887041.html
また、画面の解像度はこんなのでも求められます。
Sub y()
Dim wmi As Object
Dim monitorItems As Object, M As Object
Set wmi = GetObject("winmgmts:\\.\root\cimv2")
Set monitorItems = wmi.ExecQuery("Select * From Win32_DesktopMonitor")
For Each M In monitorItems
Debug.Print M.Name, "左右=" & M.ScreenWidth, "天地=" & M.ScreenHeight
Next
Set monitorItems = Nothing: Set wmi = Nothing
End Sub
追伸
少し手の込んだフォームを前回回答ので試したところ・・。
クイックアクセスツールバーとリボンのスペースだけが残り
その中には何も表示されていない状態。
肝心のフォームも行方不明。
になりもうした。orz
単純なフォームなら問題無さそう・・・です?
(ホントかな??)
私からは以上です。
No.1
- 回答日時:
これねえ、フォームが開かれる『前』の状態を基準にして
位置決めしてるっぽいです。
Access2000の頃にさんざん試しましたが惨敗 orz
面倒くさくなったので、見た目のセンターを適当に
Docmd movesize ・・・・
で済ませてしまっています。
Private Sub Form_open(cancel As Integer)
'ナビゲーションウィンドウを表示しない
DoCmd.SelectObject acForm, "", True
DoCmd.RunCommand acCmdWindowHide
DoCmd.RunCommand acCmdAppMaximize
DoCmd.ShowToolbar "Ribbon", acToolbarNo 'リボンを非表示にする
Application.CommandBars("Status Bar").Visible = False 'ステータスバーを非表示にする
DoCmd.SelectObject acForm, Me.Name
DoCmd.MoveSize 5000, 4000 '←ここを変更
End Sub
Private Sub Form_Unload(cancel As Integer)
'ナビゲーションウィンドウを表示する
DoCmd.SelectObject acForm, "", True
DoCmd.RunCommand acCmdAppRestore
DoCmd.ShowToolbar "Ribbon", acToolbarYes 'リボンを表示にする
Application.CommandBars("Status Bar").Visible = True 'ステータスバーを表示にする
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】リボン、行列、数式・ステータスバを非表示に 4 2022/12/12 07:32
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/06/19 10:08
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/06/10 11:06
- Visual Basic(VBA) VBA Bookの表示、非表示 1 2022/09/16 20:44
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 3 2022/06/10 09:24
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 6 2022/06/08 12:55
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) VBA ステータスバー DoEvents 1 2023/03/30 12:22
- Visual Basic(VBA) VBA。複数のChangeイベントをまとめる方法 2 2022/03/31 12:03
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/03/25 08:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
IF文に時間(何時から何時ま...
-
フォルダのアクセス権確認について
-
private subモジュールを他のモ...
-
マクロで、次のコードへ行く前...
-
Word VBA。各マクロの間に待ち...
-
シェルスクリプトでファイル内...
-
特定のファイルを他のプロセス...
-
【VBA】エラー処理で別プロシー...
-
シグナル 6(SIGABRT)とは?
-
Excel VBA セルの名前があるか...
-
For ~ Next文
-
途中で処理を中断させたい (ア...
-
ドリブン??
-
【C#】Page_Loadさせない方法に...
-
ExcelのVBAで、選択したファイ...
-
Functionで戻り値を複数返す方法
-
特定の名前のオートシェイプの...
-
VB6で定時刻処理
-
VBとSQLServerのセッションが切...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
IF文に時間(何時から何時ま...
-
private subモジュールを他のモ...
-
シグナル 6(SIGABRT)とは?
-
Functionで戻り値を複数返す方法
-
特定の名前のオートシェイプの...
-
ExcelのVBAで、選択したファイ...
-
マクロで、次のコードへ行く前...
-
どう増強すべきか
-
VBA 複数の行を高速で削除する...
-
Excel VBA セルの名前があるか...
-
特定のファイルを他のプロセス...
-
Word VBA。各マクロの間に待ち...
-
どうやってもFor文を抜けてしま...
-
【VBA】エラー処理で別プロシー...
-
エクセル VBAで複数セル選択時...
-
シェルスクリプトでファイル内...
-
【Vb.net】プリンタジョブの取得
-
vbaのエラー対応(実行時エラー...
-
VBAでBook読み込み時の非表示方...
おすすめ情報