AccessVBAでフォームを画面遷移っぽく見せる

AccessVBAでフォームを画面遷移っぽく見せる

Accessでシステムを作るのに、ポップアップを使うと開きっぱなしにならずに便利だなーと思ってわりと使っていたのですが、前の画面を閉じながら遷移するように見せるという必要に迫られたのでメモ。なるほどこういう使い方もアリだなと思いました。


ポップアップ

このように、メニューともう1つフォームがあったとして、この「フォームを開く」ボタンのクリックイベントプロシージャに

Private Sub btn_フォームを開く_Click()
  DoCmd.OpenForm "F_SampleForm", , , , , acDialog
End Sub

このように書いておくと、

ポップアップで対象フォームを開いて、このフォームを閉じるまでほかのウィンドウ操作ができなくなります。「開きっぱなし」がなくなるので、わりと好んで使っていたのですが。

画面遷移

Webページのような感覚で、同じウィンドウサイズで別フォームに画面遷移するには、ということを考えました。いろいろ方法はあるのかもしれないですが、今回考えたのはこんな感じです。難しいことはしていません。

このボタンのクリックイベントプロシージャに以下のように書きます。

Private Sub btn_フォームを開く_Click()
  DoCmd.OpenForm "F_SampleForm"
  DoCmd.Close acForm, Me.Name
End Sub

DoCmd.OpenFormの引数をフォーム名だけにすると、既定値のウィンドウモードで開きます。ほかのフォームを開いたら、自分自身を閉じています。

このボタンをクリックすると、

新しいフォームが開いて、メニューが閉じるので画面遷移したような気分になれます。ここに、「メニューへ戻る」ボタンを設置しておいて、そのボタンへも以下のように書けば、

Private Sub btn_メニューへ戻る_Click()
  DoCmd.OpenForm "F_menu"
  DoCmd.Close acForm, Me.Name
End Sub

それをクリックしたら、

またメニューに戻れる、という算段です。

以上です! ポップアップも便利なんですけど、これもなかなか良さそう。状況によって使い分けるとよいかもですー!

公開日:2019/02/25

書籍を執筆しています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)

YouTubeでQ&Aコンテンツを企画しています

運営しているYouTubeチャンネルで、ご相談やご質問を募集しています。動画のコメントやお問い合わせページからお気軽にご相談をお寄せください。