「フォームにボタンを付けて、クリック一つでレコードを追加・保存・削除したい」「データ入力フォームに印刷ボタンを配置してレポートを素早く出力したい」「別のフォームを開くボタンをメニュー画面に並べたい」——こうした要望を持つAccessユーザーに最適なのが、コマンドボタンウィザードです。コマンドボタンウィザードを使えば、VBAのコードを直接書かなくても、フォームに機能付きボタンをわずか数クリックで設置できます。
Accessのコマンドボタンウィザードは、「レコード操作」「フォーム操作」「レポート操作」「アプリケーション操作」など6つのカテゴリにわたるアクションを内包しています。ウィザードが自動生成するVBAコードはそのまま使えるだけでなく、後から確認・カスタマイズすることもできます。MOS Access 365試験(MO-500)でもフォームへのコントロール追加と操作設定は出題範囲に含まれており、コマンドボタンの設置と設定を確実に操作できるようにしておく必要があります。本記事では、ウィザードの起動方法・各カテゴリのアクション設定・生成されたVBAコードの確認・よくあるトラブルとその対処法・MOS試験攻略ポイントまで、ステップごとに解説します。
「ボタンを置いたらコードを書かないといけないの?」「ウィザードで作ったボタンの中身が気になる」「MOS試験でボタン設定問題が出たときに迷わず操作したい」という方は、ぜひ最後まで読んでください。
コマンドボタンウィザードで実現できる6カテゴリのアクション
コマンドボタンウィザードが提供するアクションは以下の6カテゴリに分類されています。それぞれのカテゴリに複数のアクションが用意されており、業務に必要なボタン機能のほとんどをカバーしています。
| カテゴリ | 代表的なアクション(例) | 主な用途 |
|---|---|---|
| レコードの移動 | 次のレコード・前のレコード・先頭・最後・特定レコードへ移動 | データ閲覧時のナビゲーション |
| レコードの操作 | レコードの追加・削除・保存・元に戻す・複製 | 入力・編集・削除の実行 |
| フォームの操作 | フォームを開く・フォームを閉じる・フォームの印刷・フォームの最新化 | フォーム間の遷移・終了操作 |
| レポートの操作 | レポートのプレビュー・レポートの印刷・レポートのメール送信 | 帳票の出力・配布 |
| アプリケーション | Accessの終了・ヘルプの表示 | アプリ終了ボタン |
| その他 | マクロの実行・VBAコードの実行・Webページを開く | カスタム処理の呼び出し |
実務でとくに使用頻度が高いのは「レコードの操作」「フォームの操作」「レポートの操作」の3カテゴリです。この3つを確実に操作できれば、業務アプリケーションの基本的なボタン群をすべてウィザードで実装できます。
コマンドボタンウィザードの起動と基本手順
コマンドボタンウィザードを使用するには、フォームのデザインビューでコントロールウィザードが有効になっている状態でボタンを配置する必要があります。手順を順番に説明します。
ステップ1:フォームをデザインビューで開く
ナビゲーションペインで対象のフォームを右クリックし、[デザインビュー]を選択してフォームをデザインビューで開きます。すでに開いているフォームはビュー切り替えボタン(画面右下または[ホーム]タブの[表示]ボタン)からデザインビューに切り替えることもできます。
ステップ2:コントロールウィザードを有効にする
デザインビューに切り替えたら、[デザイン]タブの[コントロール]グループにある[コントロールウィザードの使用]ボタンを確認します。このボタンがオフ(非押下状態)のときはウィザードが起動しません。ボタンをクリックしてオン(押下状態)にしてからコマンドボタンを配置します。アイコンは魔法の杖のような形をしており、オンのときはハイライト表示されます。
ステップ3:ボタンをフォーム上に配置してウィザードを起動する
[デザイン]タブの[コントロール]グループから[ボタン](四角形のアイコン)をクリックし、フォームのデザインビュー上でボタンを配置したい位置でドラッグします。マウスを離した瞬間に「コマンドボタンウィザード」ダイアログが自動的に起動します。ウィザードが起動しない場合は「コントロールウィザードの使用」がオフになっているため、ステップ2に戻って確認してください。
ステップ4:カテゴリとアクションを選択する
ウィザードの第1画面では、左側の「カテゴリ」リストでアクションの種類を選び、右側の「操作」リストで具体的なアクションを選択します。たとえば「レコードの操作」→「レコードの追加」を選ぶと、クリックで新規入力行に移動するボタンが作成されます。選択したら[次へ]をクリックします。
ステップ5:ボタンの表示内容を設定する
第2画面では、ボタンに表示するのが「テキスト(文字)」か「ピクチャー(アイコン画像)」かを選択します。テキストを選んだ場合はキャプション文字列を入力します。ピクチャーを選んだ場合はAccess付属の小アイコンから選べます。実務ではテキスト表示が分かりやすく推奨されます。設定したら[次へ]をクリックします。
ステップ6:ボタンの名前を設定して完了する
最終画面では、ボタンのオブジェクト名(VBAコードで参照するときの名前)を設定します。デフォルト名(「コマンド1」のような連番)のままでも動作しますが、後でVBAコードを読む際に分かりやすいよう「btnAddRecord」「btnClose」のような名前を付けておくと管理しやすくなります。[完了]をクリックするとボタンが配置され、ウィザードが閉じます。
レコード操作ボタンを設定する
レコードの追加・保存・削除・元に戻すボタンは、データ入力フォームで最も頻繁に使われるボタン群です。それぞれのアクションと設定時の注意点を解説します。
レコードの追加ボタン(新規入力用)
カテゴリ「レコードの操作」→操作「レコードの追加」を選択します。このボタンをクリックすると、フォームの最後尾に新しい空白レコードが表示され、すぐに入力を開始できる状態になります。ウィザードが生成するVBAコードは DoCmd.GoToRecord , "", acNewRec です。既存の入力内容が保存されていない状態でクリックすると確認ダイアログが表示されることがあります。入力フォームのボタンバーの先頭に配置するのが一般的です。
レコードの保存ボタン(変更を確定する)
カテゴリ「レコードの操作」→操作「レコードの保存」を選択します。フォーム上で編集中のレコードをデータベースに確定保存します。ウィザードが生成するVBAコードは DoCmd.RunCommand acCmdSaveRecord です。Accessはレコード移動時に自動保存しますが、明示的に「保存」ボタンを設けることで入力者に「この操作で保存される」と認識させるUX改善に役立ちます。
レコードの削除ボタン
カテゴリ「レコードの操作」→操作「レコードの削除」を選択します。現在表示されているレコードを削除します。ウィザードが生成するVBAコードは DoCmd.RunCommand acCmdDeleteRecord です。削除は取り消せないため、ボタンの配置場所は他の操作ボタンと離しておき、誤クリックを防ぐレイアウトが推奨されます。削除前に確認ダイアログを出したい場合は、生成されたVBAコードに If MsgBox("このレコードを削除しますか?", vbYesNo) = vbYes Then の条件分岐を追加することで対応できます(後述)。
レコードの元に戻すボタン
カテゴリ「レコードの操作」→操作「レコードの元に戻す」を選択します。編集中の入力内容を保存前の状態に戻します。ウィザードが生成するVBAコードは DoCmd.RunCommand acCmdUndo です。一度保存したレコードには効果がないため、入力取り消し用と位置付けるのが適切です。
フォーム操作ボタンを設定する
複数のフォームを使う業務アプリケーションでは、フォームを開く・閉じるボタンはナビゲーションの核になります。
フォームを開くボタン(別フォームへ遷移する)
カテゴリ「フォームの操作」→操作「フォームを開く」を選択します。[次へ]を押すと「どのフォームを開くか」を選択する画面が表示されます。データベース内に存在するフォーム名の一覧が表示されるので、遷移先フォームを選択して[次へ]をクリックします。続いて「特定のデータのみを表示するか」の設定画面が表示されます。「フォームのすべてのレコードを開く」を選ぶと条件なしで対象フォームを開きます。特定のレコードのみを絞り込んで開きたい場合は「特定の条件でのみ開く」を選び、キー項目を指定します。ウィザードが生成するVBAコードは DoCmd.OpenForm "フォーム名" の形になります。
フォームを閉じるボタン(入力完了後の終了)
カテゴリ「フォームの操作」→操作「フォームを閉じる」を選択します。現在開いているフォームを閉じます。ウィザードが生成するVBAコードは DoCmd.Close です。閉じる前に保存を促したい場合は、前述の「レコードの保存」コードを閉じる処理の前に追記する方法が使えます。データ入力フォームの末尾に「保存して閉じる」ボタンとして組み合わせる設計がよく見られます。
レポート操作ボタンを設定する
フォームからレポートを印刷・プレビューするボタンは、業務帳票を素早く出力したい場面で欠かせません。
レポートのプレビューボタン
カテゴリ「レポートの操作」→操作「レポートのプレビュー」を選択します。[次へ]を押すと「どのレポートを開くか」の選択画面が表示されます。データベース内のレポート一覧から対象レポートを選択して[次へ]で進み、キャプションを設定して[完了]します。ウィザードが生成するVBAコードは DoCmd.OpenReport "レポート名", acViewPreview です。印刷プレビューで内容を確認してから印刷する運用に適しています。
レポートの印刷ボタン(直接印刷する)
カテゴリ「レポートの操作」→操作「レポートの印刷」を選択します。選択したレポートをプレビューなしで直接プリンターへ送ります。ウィザードが生成するVBAコードは DoCmd.OpenReport "レポート名", acViewNormal です。印刷確認ダイアログを事前に出したい場合は、acViewPreview を使ってプレビューを経由する方法が安全です。直接印刷ボタンは操作が不可逆的であるため、業務フローの中での必要性を検討してから配置を判断してください。
ボタン作成後にVBAコードを確認・カスタマイズする
コマンドボタンウィザードが生成したVBAコードは、VBAエディター(Visual Basic for Applications)で確認・編集できます。ウィザード生成コードをベースにカスタマイズすることで、より業務に即した動作を実装できます。
イベントプロシージャをコードビルダーで確認する手順
フォームのデザインビューで対象のボタンをクリックして選択状態にします。[デザイン]タブの[ツール]グループにある[プロパティシート]を開きます。[イベント]タブをクリックし、「クリック時」プロパティに「[イベント プロシージャ]」と表示されていることを確認します。この欄の右端にある「…」(ビルダー)ボタンをクリックすると、VBAエディターが開いてウィザードが生成したコードが表示されます。生成されたコードは Private Sub ボタン名_Click() で始まるイベントプロシージャです。
削除確認ダイアログを追加するカスタマイズ例
ウィザードが生成した削除ボタンのコードに確認ダイアログを追加する例を示します。
Private Sub btnDelete_Click()
If MsgBox("このレコードを削除しますか?", vbYesNo + vbQuestion, "削除確認") = vbYes Then
DoCmd.RunCommand acCmdDeleteRecord
End If
End Sub
上記のコードでは、削除ボタンをクリックすると「はい/いいえ」の確認ダイアログが表示され、「はい」を選んだ場合のみ DoCmd.RunCommand acCmdDeleteRecord が実行されます。ウィザードが生成した1行の削除コードを If MsgBox(…) = vbYes Then … End If で囲むだけで実装できます。
エラー処理を追加するカスタマイズ例
フォームを開くボタンなど、指定したオブジェクトが存在しない場合にエラーで停止することがあります。On Error GoToによるエラー処理をウィザード生成コードに追加すると、本番運用時の予期しない停止を防げます。
Private Sub btnOpenForm_Click()
On Error GoTo ErrHandler
DoCmd.OpenForm "受注入力フォーム"
Exit Sub
ErrHandler:
MsgBox "フォームを開けませんでした。エラー: " & Err.Description
End Sub
コマンドボタン設定でよくある問題と対処法
コマンドボタンウィザードを使う際に発生しやすいトラブルとその対処法をまとめます。
| 症状・問題 | 原因 | 対処法 |
|---|---|---|
| ボタンを配置してもウィザードが起動しない | 「コントロールウィザードの使用」がオフ | [デザイン]タブ→[コントロール]グループで「コントロールウィザードの使用」をオンにする |
| 「フォームを開く」で開きたいフォームが一覧に出ない | 対象フォームが未保存・または同DBに存在しない | 先に対象フォームを保存してからウィザードを再起動する |
| レコードを削除しようとすると「削除できません」と表示される | リレーションシップで参照整合性が設定されており関連レコードが存在する | 関連テーブルの参照先レコードを先に削除するか、リレーションシップの「連鎖削除」を有効化する(慎重に検討する) |
| 印刷ボタンをクリックしても何も起きない・エラーになる | 指定したレポート名が変更されているまたは存在しない | VBAコードの文字列(レポート名)とナビゲーションペインのレポート名が一致するか確認する |
| フォームを開くボタンで「引数が正しくありません」エラーが出る | フォーム名に半角スペースや特殊文字が含まれている | VBAコードのフォーム名を DoCmd.OpenForm "[スペース付き フォーム名]" のように角括弧で囲む |
| ボタンのキャプションが文字化けしている | ウィザードでの入力が正しく反映されていない | デザインビューでボタンを選択→プロパティシートの[書式]タブ→「標題」プロパティに正しい文字を入力する |
| ウィザード完了後にボタンが非表示(見えない)になった | 「表示」プロパティが「いいえ」になっている | プロパティシートの[書式]タブ→「表示」プロパティを「はい」に変更する |
MOS Access試験でのコマンドボタン操作ポイント
MOS Access 365試験(MO-500)のフォームに関するスキル領域には、コントロールの追加と設定が出題範囲に含まれます。コマンドボタンウィザードによるボタン設置は試験の設問に直接対応するため、以下のポイントを押さえておきましょう。
- 「コントロールウィザードの使用」の有効化:ウィザードが起動しない場合の確認箇所として必ず覚える。試験環境ではオフになっているケースがある
- カテゴリと操作の組み合わせ:設問に「レコードを追加するボタンを設置する」と指示があった場合、「レコードの操作」→「レコードの追加」の選択が求められる。カテゴリ名と操作名の日本語表記を正確に把握しておく
- キャプションの設定:設問でボタンの表示文字列が指定される場合は「テキスト」を選んで正確に入力する。大文字・小文字・スペースを含め完全一致が求められることがある
- ボタンのオブジェクト名:設問でVBAから呼び出すために特定の名前を付けるよう指示される場合がある。ウィザードの最終画面でオブジェクト名を変更する手順を確認しておく
- デザインビューでの後編集:ウィザード完了後にプロパティシートで標題・サイズ・位置を調整することが試験で求められるケースもある。[書式]タブと[イベント]タブの主要プロパティの場所を把握しておく
- ウィザードを使わずボタンを配置した場合:「コントロールウィザードの使用」がオフの状態でボタンを置くと、空のボタンが配置されVBAコードは自動生成されない。後からプロパティシートのイベントタブでコードを手動記述するか、コントロールウィザードをオンにしてボタンを置き直す
MOS試験 コマンドボタン操作チェックリスト
| 確認ポイント | 操作内容 | 難易度 |
|---|---|---|
| ウィザードの有効化 | [デザイン]タブで「コントロールウィザードの使用」をオンにできる | ★☆☆ |
| ボタンの配置 | [コントロール]グループの[ボタン]をクリックしてフォーム上でドラッグできる | ★☆☆ |
| カテゴリ・操作の選択 | ウィザード第1画面でカテゴリと操作を正確に選択できる | ★☆☆ |
| キャプション設定 | ウィザード第2画面でテキストを選んで指定の文字列を入力できる | ★☆☆ |
| オブジェクト名の設定 | ウィザード最終画面でボタンのオブジェクト名を変更できる | ★★☆ |
| プロパティシートでの後編集 | 標題・幅・高さ等をプロパティシートで変更できる | ★★☆ |
| VBAコードの確認 | プロパティシートの[イベント]タブからコードビルダーを起動できる | ★★☆ |
| フォームを開くボタンの対象フォーム指定 | ウィザードで開く対象フォームを一覧から選択できる | ★★☆ |
| レポートプレビューボタンの設定 | カテゴリ「レポートの操作」から対象レポートを指定してボタンを作成できる | ★★☆ |
MOS Access 365試験(MO-500)の試験時間は50分です。採点は1,000点満点で行われ、合格点は非公表ですが550点~850点が目安とされています。合格率は公表されていません。出題形式は5個~10個のプロジェクトで構成されます。受験料は一般価格と学割価格の2種があり(税込)、金額は改定されることがあるため最新情報は公式サイトの「受験料・価格」(https://mos.odyssey-com.co.jp/exam/examfee.html)でご確認ください。コマンドボタンの操作は短時間で完了できる内容ですが、ウィザードが起動しない状態で焦って時間を浪費しないよう、起動前の「コントロールウィザードの使用」確認を習慣化してください。
まとめ:コマンドボタンウィザードでAccessフォームに機能ボタンを素早く設置する
本記事のポイントをまとめます。
- コマンドボタンウィザードとは:VBAコードを手書きしなくても、カテゴリとアクションを選ぶだけでレコード操作・フォーム遷移・レポート印刷などのボタンをフォーム上に設置できるウィザード機能
- 6カテゴリのアクション:レコードの移動・レコードの操作・フォームの操作・レポートの操作・アプリケーション・その他。実務でよく使うのは「レコードの操作」「フォームの操作」「レポートの操作」の3カテゴリ
- 起動の前提条件:[デザイン]タブの「コントロールウィザードの使用」がオンになっていることを必ず確認する。オフではウィザードが起動しない
- ウィザードの3画面:①カテゴリ・操作の選択→②キャプション(テキストまたはピクチャー)の設定→③オブジェクト名の設定、という流れで設定する
- 生成されたVBAコード:プロパティシートの[イベント]タブ→「クリック時」→「…」ボタンからVBAエディターで確認・編集できる
- 削除ボタンのカスタマイズ:ウィザード生成コードを
If MsgBox(…) = vbYes Thenで囲むだけで確認ダイアログを追加できる - よくあるトラブル:ウィザードが起動しない(コントロールウィザードの使用がオフ)・レポート名の不一致(VBAコードのフォーム名・レポート名を確認)・削除できない(参照整合性の制約)
- MOS試験対策:ウィザード起動前の有効化確認・カテゴリ名と操作名の把握・キャプション入力・プロパティシートでの後編集手順を実際に操作して習得する
コマンドボタンウィザードを使いこなすと、AccessフォームにCRUDボタン・フォーム遷移ボタン・印刷ボタンを素早く設置できるようになり、業務専用アプリケーションの完成度が大きく高まります。ウィザードが生成するVBAコードは1~3行程度のシンプルなものが多く、カスタマイズの入口として最適です。まずはサンプルデータベースでレコードの追加ボタン・保存ボタン・閉じるボタンの3つを実際に配置して動作確認することから始めてください。
PR
MOS試験シリーズの定番対策テキスト。試験の形式・操作の確認方法・プロパティシートの使い方など、MOS Access試験の学習にも共通する試験運営の仕組みとOffice操作の基本を理解するために活用できます。
PR
たった1秒で仕事が片づくExcel自動化の教科書【改訂第3版】
ボタン一発で処理を実行する業務自動化の発想は、ExcelマクロもAccessコマンドボタンも共通です。VBAによる操作の自動化・ボタン設置の考え方を学ぶ一冊として、Accessのコマンドボタン設計の参考にも役立ちます。
