Access VBAでフォームを開く方法をお探しですね。

広告

Accessでフォームを開いたり閉じたりする方法を分かりやすく解説

Accessでデータベースを作るとき、ボタンを押したら別の画面が開いたり、元の画面が閉じたりする仕組みは絶対に覚えておきたい基本操作です。

この記事では、Access VBAを使った画面の開き方と閉じ方を、初心者の方にも分かるように丁寧に説明していきます。

別のフォームを開く基本的な方法(DoCmd.OpenForm)

Access VBAで別のフォームを開くには、「DoCmd.OpenForm」というコマンドを使います。

一番シンプルな書き方は「DoCmd.OpenForm “開きたいフォームの名前”」というたった1行のコードです。

たとえば、メニュー画面のボタンを押したときに「顧客登録フォーム」を開きたいなら、ボタンをクリックしたときに動くイベントにこの1行を書くだけでOKです。

マクロでも同じことができますが、VBAで書いておくと、後で説明するような細かい設定やエラー対策がしやすくなります。

まずはこの基本の書き方をしっかり覚えて、好きなフォームを自由に開けるようになりましょう。

DoCmd.OpenFormは、フォーム名を指定するだけでなく、いろいろなオプション(引数)を追加して動きを細かく調整できるのが便利なところです。

正式な書き方は「DoCmd.OpenForm FormName, View, FilterName, WhereCondition, DataMode, WindowMode, OpenArgs」となっていて、必要に応じてオプションを追加していきます。

たとえば「View」というオプションを使えば、普通の表示だけでなく、デザイン画面やデータシート形式で開くこともできます。

でも最初から全部覚える必要はありません。

オプションを省略すれば普通に開いてくれるので、まずはフォーム名の指定だけを覚えて、必要になったときに少しずつ勉強していくのがおすすめです。

フォームを閉じる方法(DoCmd.Close)

フォームを開くのと同じくらいよく使うのが、表示されているフォームを閉じる「DoCmd.Close」というコマンドです。

基本の書き方は「DoCmd.Close オブジェクトの種類, “オブジェクトの名前”, 保存するかどうか」となります。

フォームを閉じる場合は、オブジェクトの種類に「acForm」を指定して、その後に閉じたいフォームの名前を書きます。

何も書かずに「DoCmd.Close」とだけ書いた場合は、今一番手前に表示されている画面が閉じられます。

自分自身のフォームを閉じるだけなら何も書かなくても動きますが、間違って別の画面が閉じてしまうトラブルを防ぐために、どのフォームを閉じるのかをきちんと書く癖をつけておくと安心です。

もう一つ注意したいのが、DoCmd.Closeの3つ目のオプション「保存するかどうか(Save)」です。

これは入力したデータを保存するかどうかではなく、「フォームのデザインの変更を保存するか」を決めるものです。

普通にシステムを使っているときに、ユーザーが間違ってフォームのサイズを変えてしまったり、レイアウトが崩れてしまったりすることがあります。

それを勝手に保存されないようにするには「acSaveNo」を指定します。

実際のシステム開発では、ユーザーにデザインを変更させないのが普通なので、フォームを閉じるときは「DoCmd.Close acForm, “フォーム名”, acSaveNo」と書く習慣をつけておくと、システムが安定して動くようになります。

画面を切り替える方法(元の画面を閉じて新しい画面を開く)

実際にAccessでシステムを作るときは、単にフォームを開くだけでなく、「今のメニュー画面を閉じてから、次の詳細画面を開く」という画面の切り替え処理がよく必要になります。

この処理を作るには、さっき説明したDoCmd.OpenFormとDoCmd.Closeを同じイベントの中に続けて書きます。

具体的には、ボタンをクリックしたときのイベントに、まず「DoCmd.OpenForm “次の画面のフォーム名”」と書いて、その下の行に「DoCmd.Close acForm, “今の画面のフォーム名”」と書きます。

この2行のコードを組み合わせるだけで、ユーザーから見ると画面がスムーズに切り替わったように見える、使いやすいシステムが作れます。

ここでよくある失敗が、「開く」と「閉じる」の順番を逆にしてしまうことです。

もし先にDoCmd.Closeを実行してしまうと、その時点で今の画面が閉じられて、そこに書いてあるVBAの実行も途中で止まってしまう可能性があります。

なので、必ず「新しい画面を開いてから、古い画面を閉じる」という順番を守ってください。

この基本ルールを守れば、Accessのシステム全体をスムーズに動き回れるようになって、使いやすいデータベースアプリケーションが作れます。

もっと便利な使い方(条件を指定して開く・ダイアログで開く)

DoCmd.OpenFormには、実際の仕事でとても役立つ便利な使い方があります。

一つ目は「WhereCondition」というオプションを使って、特定のデータだけを表示する方法です。

たとえば、顧客一覧の画面で特定のお客さんを選んで「詳細を見る」ボタンを押したとき、そのお客さんのデータだけが表示された詳細画面を開きたい場面がよくあります。

このとき、OpenFormの4つ目のオプションであるWhereConditionに「”顧客ID = ” & Me.顧客ID」といった条件式を書くことで、選んだレコードだけをピンポイントで表示させることができます。

これを使えば、たくさんのデータの中から目的の情報を探す手間が省けて、作業効率がグッと上がります。

もう一つの便利な使い方が、6つ目のオプション「WindowMode」に「acDialog」を指定して、フォームをダイアログモード(モーダル)で開く方法です。

ダイアログモードでフォームを開くと、その画面が閉じられるまで他の画面を操作できなくなります。

これは、パスワードの入力画面や、処理を実行する前の確認画面など、ユーザーに必ず入力してほしい場面で使うととても効果的です。

* 特定のデータだけを絞り込んで表示したいときは「WhereCondition」を使う
* ユーザーに他の操作をさせず、画面の入力を強制したいときは「acDialog」を使う

この2つのテクニックを使い分けられるようになると、単なる画面の表示だけでなく、本格的でしっかりしたAccessシステムが作れるようになります。

最初はシンプルな開閉処理から始めて、慣れてきたらオプションを使った応用処理にもぜひチャレンジしてみてください。

広告