重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

一つは全画面表示(Maximize)で開きもう一つは普通の表示(Restore)で開くには?

フォーム1とフォーム2があります。画像をご覧ください。

フォーム1は
Private Sub Form_Load()
DoCmd.Maximize
End Sub
で、
フォーム2は
Private Sub Form_Load()
DoCmd.Restore
End Sub
としてます。

フォーム1にコマンドボタンを設置して、
Private Sub フォーム2を開く_Click()
DoCmd.OpenForm "フォーム2"
End Sub
として、フォーム2を開くのですが、
フォーム2が開くとフォーム1まで、元の大きさに戻ってしまいます。

行いたいことは、
フォーム1は全画面表示、フォーム2は、ノーマルな表示(全画面でも最小化でもない)
にしたいのですが、不可能なのでしょうか?

「アクセスフォームのサイズの調整について」の質問画像

A 回答 (4件)

No2です。

最小化ボタンも面倒だな、ということであれば、
フォーム1にボタンを二つ追加して、それぞれ


Private Sub コマンド1_Click()
'フォーム2が起動されているか確認して
If IsLoaded("フォーム2") = True Then
DoCmd.SelectObject acForm, "フォーム2"
DoCmd.Minimize
End If
End Sub

Private Sub コマンド2_Click()
'フォーム2が起動されているか確認して
If IsLoaded("フォーム2") = True Then
DoCmd.SelectObject acForm, "フォーム2"
DoCmd.Restore
End If
End Sub



のようにします。それから標準モジュールに以下を
貼り付け、保存します。以下はOfficeのSaplesの中にある
NorthWindowというAccessのサンプルの中にあるコードです。
それを利用します。


Function IsLoaded(ByVal strFormName As String) As Boolean
' 指定したフォームがフォーム ビューまたはデータシート ビューで開かれている場合
'True を返します。

Const conObjStateClosed = 0
Const conDesignView = 0

If SysCmd(acSysCmdGetObjectState, acForm, strFormName) <> conObjStateClosed Then
If Forms(strFormName).CurrentView <> conDesignView Then
IsLoaded = True
End If
End If

End Function



以上です。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2012/11/06 20:24

No2です。

ポップアップを設定すると当然ながら
フォーム1をアクティブにしても後ろには隠れませんから、
フォーム1での作業に邪魔になるならばそのときには
最小化ボタンをプチッとすればいいのでは、と思いますが。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2012/11/06 20:24

フォーム2のプロパティで、「ポップアップ」を


「はい」にしてみてください。そのとき

Private Sub Form_Load()
DoCmd.Restore
End Sub

は必要ないとは思いますが、一応念のために確認してみてください。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2012/11/06 20:24

無理ですね。



DoCmd.Maximize、DoCmd.Restoreはフォームに対するコマンドではなく、アプリケーションに対するコマンドですから。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2012/11/06 20:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!