Access VBA入門をお探しですね。

Accessでテーブルやクエリ、フォームを作れるようになると、次に「ボタンを押したら処理を自動実行したい」「毎回行っている作業をまとめて処理したい」と感じる場面が増えてきます。

そこで役立つのがAccess VBAです。

ただ、最初は「標準モジュールって何?」「プロシージャはどこに書くの?」「フォームのコードとは何が違うの?」といった疑問で迷いがちです。

この記事では、Access VBA入門として、標準モジュールとプロシージャの基本から、最初に動かすコードの作成方法まで、初心者向けに順番に解説していきます。

広告

Access VBA入門で最初に理解したい標準モジュールとプロシージャの関係

Access VBAを学び始めると、まず「モジュール」と「プロシージャ」という言葉が出てきます。

**モジュール**は、VBAコードを保存しておく場所です。

**プロシージャ**は、その中に書く一つひとつの処理のまとまりです。

たとえるなら、モジュールはノートやファイル、プロシージャはその中に書かれた作業手順の1項目、といった感じです。

AccessのVBAでは、いきなり単独でコードが存在するわけではなく、必ず何らかのモジュールの中にプロシージャとして処理を書いていきます。

この構造を理解しておくと、「どこにコードを書けばいいの?」「なぜ実行できないの?」という初心者がつまずきやすい疑問を整理しやすくなります。

Accessのモジュールには、大きく分けて**標準モジュール**、フォームやレポートに紐づくモジュール、クラスモジュールがあります。

初心者が最初に覚えるべきなのは、Access全体で使い回せる処理を書ける「**標準モジュール**」です。

標準モジュールに書いたSubプロシージャやFunctionプロシージャは、フォームやマクロなどから呼び出して利用できます。

一方、フォームのボタンをクリックしたときに動く処理は、通常そのフォーム専用のモジュールに書かれます。

つまり、**共通部品として使う処理は標準モジュール、特定のフォーム操作に反応する処理はフォームモジュール**、と考えると理解しやすくなります。

Access VBAでは「フォームをVBAだけで作ってから開く」というより、通常はAccess側でフォームやボタンなどの画面部品を作り、その操作に応じてVBAを動かす流れが一般的です。

もちろん高度なVBAを使えばフォーム自体をコードで作成することも可能ですが、入門段階ではおすすめしません。

まずは、Accessの画面でテーブル、クエリ、フォームを作り、必要な部分だけをVBAで自動化する考え方を身につけることが大切です。

この前提を押さえておくと、標準モジュールとフォームモジュールの使い分けも自然に理解できるようになります。

標準モジュールの作成方法とVBEで確認すべき画面

標準モジュールを作成するには、VBAを書くための専用画面である**VBE(Visual Basic Editor)**を開きます。

Accessの上部メニューから「データベースツール」タブを選び、「Visual Basic」をクリックするとVBEが起動します。

ショートカットキーを使う場合は、**Altキーを押しながらF11キー**を押しても開けます。

VBEが表示されたら、上部メニューの「挿入」から「標準モジュール」を選択します。

すると、プロジェクトエクスプローラーに「Module1」のような名前のモジュールが追加され、右側にコードを書くための白い画面が表示されます。

VBEで特に見ておきたいのが、**プロジェクトエクスプローラー**です。

ここには、現在開いているAccessファイル内のフォーム、レポート、標準モジュールなどがツリー形式で表示されます。

もし表示されていない場合は、VBE上で**Ctrl+R**を押すと表示できます。

初心者のうちは、コードを書く前に「今どのモジュールを開いているのか」を必ず確認する習慣をつけると安心です。

フォーム専用のモジュールに共通処理を書いてしまうと、別のフォームから使いにくくなる場合があります。

反対に、ボタンのクリック時だけに必要な処理を標準モジュールへ無理に書くと、処理の流れが追いにくくなることもあります。

標準モジュールを作成したら、最初に設定しておきたいのが「**Option Explicit**」です。

これは、変数を使う前に必ず宣言することを強制する命令です。

変数とは、値を一時的に入れておく箱のようなものですが、宣言を忘れたり名前を打ち間違えたりすると、思わぬ不具合につながります。

モジュールの先頭にOption Explicitを記述しておけば、未宣言の変数があると実行前にエラーとして教えてくれるため、ミスを早い段階で発見できます。

VBEのオプション設定で「変数の宣言を強制する」を有効にしておくと、新しいモジュールを作成したときに自動でOption Explicitが入るため、入門段階から設定しておくとよいでしょう。

SubとFunctionの違いを押さえて最初のプロシージャを書く

標準モジュールの中に書くプロシージャには、主に**Subプロシージャ**と**Functionプロシージャ**があります。

**Subプロシージャ**は、メッセージを表示する、フォームを開く、クエリを実行するなど、処理を実行して完了するためのものです。

**Functionプロシージャ**は、処理を行ったうえで結果を返すためのもので、独自の関数を作るときに使います。

たとえば、金額から税込価格を計算して返すような処理はFunctionに向いています。

最初は違いが難しく感じるかもしれませんが、「**実行するだけならSub、計算結果や判定結果を返すならFunction**」と覚えると使い分けやすくなります。

まずは、標準モジュールに簡単なSubプロシージャを書いてみましょう。

VBEで標準モジュールを開き、次のコードを入力します。

MsgBoxは、画面にメッセージボックスを表示するためのVBAの命令です。

コードを書いたら、プロシージャ内にカーソルを置いた状態で**F5キー**を押すか、VBE上部の実行ボタンをクリックします。

正しく入力できていれば、「Access VBAの最初のコードです」というメッセージが表示されます。

“`vba
Option Explicit

Public Sub はじめてのVBA()
MsgBox “Access VBAの最初のコードです”
End Sub
“`

このコードでは、「Public Sub はじめてのVBA()」から「End Sub」までが1つのSubプロシージャです。

**Public**は、ほかの場所から呼び出せる公開されたプロシージャであることを示します。

標準モジュールに書いたPublic Subは、Access内の別のフォームやマクロから呼び出しやすいため、共通処理として利用しやすい形です。

プロシージャ名には日本語も使えますが、実務では英数字で意味の分かる名前にすることも多いです。

たとえば「ShowStartMessage」や「OpenMenuForm」のように、何をする処理なのか分かる名前にしておくと、後から見直したときに理解しやすくなります。

Functionプロシージャも基本形を確認しておきましょう。

次の例は、税抜金額を受け取り、10%の税込金額を返すFunctionです。

Functionでは、プロシージャ名に値を代入することで、呼び出し元へ結果を返します。

Accessのクエリやフォームの式から利用できる場面もあるため、計算や文字列加工などを共通化したいときに便利です。

ただし、入門段階ではまずSubで「処理を動かす感覚」を身につけ、その後でFunctionを使った再利用に進むと理解しやすくなります。

“`vba
Public Function 税込金額(ByVal price As Currency) As Currency
税込金額 = price * 1.1
End Function
“`

フォームからVBAを動かす流れと保存・実行時の注意点

Access VBAは、標準モジュールにコードを書くだけでなく、フォームの操作と組み合わせることで実用性が大きく高まります。

たとえば、フォームに配置したボタンをクリックしたときに、別のフォームを開いたり、クエリを実行したり、入力内容をチェックしたりできます。

このような「クリックした」「更新した」「開いた」といった操作のきっかけを**イベント**と呼びます。

フォームのボタンを選択し、プロパティシートの「イベント」タブにある「クリック時」で「イベント プロシージャ」を選ぶと、そのボタン専用のプロシージャを作成できます。

作成されたコードはフォームモジュールに保存され、ボタンのクリックというイベントが発生したときに実行されます。

標準モジュールの処理をフォームから呼び出す場合は、フォーム側のイベントプロシージャ内にプロシージャ名を書きます。

たとえば、先ほど標準モジュールに作成した「はじめてのVBA」をボタンから実行したい場合、ボタンのクリック時イベントに次のように記述します。

これにより、画面操作をきっかけに標準モジュールの共通処理を動かせます。

実務では、フォーム側には「**いつ動かすか**」を書き、標準モジュール側には「**何をするか**」の共通処理を書くように分けると、コードが整理しやすくなります。

“`vba
Private Sub コマンド0_Click()
はじめてのVBA
End Sub
“`

コードを書いた後は、保存とセキュリティ設定にも注意が必要です。

Accessでは、VBAを含むファイルを開いたときに「**コンテンツの有効化**」が表示されることがあります。

これは、マクロやVBAが自動実行される可能性があるため、危険なファイルを誤って動かさないようにするための仕組みです。

自分で作成した信頼できるファイルであれば、コンテンツを有効化してから動作確認します。

また、頻繁に使う開発用フォルダーは、Accessのトラストセンターから「信頼できる場所」に設定しておくと、毎回警告に悩まされにくくなります。

ただし、インターネットから入手した不明なAccessファイルでは、安易に有効化しないことが大切です。

実行時にエラーが出た場合は、まず**スペルミス、記号の抜け、全角と半角の混在**を確認します。

VBAでは、かっこやダブルクォーテーション、プロシージャ名の入力ミスが原因で動かないことがよくあります。

エラー箇所が黄色で示された場合は、その行の内容を落ち着いて読み、必要に応じてVBEのデバッグ機能で1行ずつ確認します。

初心者のうちは、いきなり長いコードを書くよりも、MsgBoxでメッセージを表示する、フォームを開く、簡単な計算を返す、といった小さな処理を積み重ねるほうが上達しやすいです。

標準モジュールとプロシージャの関係を理解し、小さなコードを確実に動かせるようになれば、Access VBAで業務を自動化するための土台がしっかり身につきます。

広告