以降のセクションでは、VBA に関する有用な情報を提供します。 オブジェクト名は、Northwind 2.0 Starter Edition データベースで容易に調べることができるように提供されています。
VBA
VBA (Visual Basic for Applications) は、Access だけでなくすべての Microsoft 365 製品で使用されるプログラミング言語です。 主にこちらで説明されています: 開発者向けドキュメントにアクセスします。 開始するには、「Access プログラミングの概要」を参照してください。
情報を検索するときは、Access 固有の例を探し、検索語句に Microsoft Access を含めてください。 多くの場合、他の Microsoft 365 製品のソリューションは機能しますが、変更が必要になる場合があります。
Microsoft Access は成熟した製品です。 つまり、例がたくさんあるので、それはあなたにとって素晴らしいことです。 これは、Access プログラミングに関する古い書籍が引き続き参照可能であることも意味します。 古い本の多くは、元の価格の数分の一で古本サイトで今でも入手できます。
信頼できる場所と有効なコンテンツ
Microsoft Access ファイルは Microsoft 365 ファイルです。 Microsoft 365 ファイルは信頼できる場所にあるか、そのコンテンツが有効になっている必要があります。 これらのアイテムは、お客様が作成したか、信頼できる情報源から提供されたものであるため、安全と見なされます。 このチェックは、Microsoft 365 ファイルを開くたびに行われます。 今後、これを信頼済み/有効と呼びます。 新しいバージョンのアプリケーションがリリースされ、信頼されていない場所から開かれた場合、コンテンツを有効にするプロセスが繰り返されます。 詳細については、「Microsoft 365 ファイルの信頼できる場所」、「データベースを信頼するかどうかを決定する」、「Microsoft 365 で信頼できる場所を追加、削除、または変更する」を参照してください。
マクロ、関数、およびサブ プロシージャ
マクロ、関数、およびサブプロシージャを使用して、ビジネス ロジックを Access データベースに実装します。
フォーム上のコントロール (ボタン、テキスト ボックス、ラベルなど) は、そのイベント (コントロールのクリックなど) を使用して、レコードの追加、削除、フォームを開くなど、他のプロセスをトリガーできます。 これらのプロセスは、マクロまたは VBA を使用して実装できます。 Northwind では主にマクロと一部の VBA を使用します。 詳細については、「RunCode マクロ アクション」を参照してください。
一部のコントロールの種類には、マクロを自動的に作成するウィザードが組み込まれています。 たとえば、フォームにコマンド ボタンを追加すると、ウィザードが開き、ボタンの機能をいくつか選択できます。 コンボ ボックスを追加すると、フォーム上の特定のレコードを検索するように構成できるウィザードが開きます。
ナビゲーション ウィンドウ
ナビゲーション ウィンドウは、すべてのデータベース オブジェクトを表示およびアクセスする主な方法であり、既定では Access ウィンドウの左側に表示されます。 Northwind 2.0 Starter Edition のナビゲーション ウィンドウがカスタマイズされました。 Northwind Starter 2.0 というカスタム カテゴリを作成しました。 これにより、機能領域別にオブジェクトを整理できます。 詳細については、「ナビゲーション ウィンドウのカスタマイズ」を参照してください。
適用範囲と可視性
Access と Microsoft 365 の範囲と可視性について理解することが重要です。 スコープとは、変数、定数、またはプロシージャを別のプロシージャで使用できるかどうかを示します。 スコープ レベルには、プロシージャ レベル、プライベート モジュール レベル、およびパブリック モジュール レベルの 3 つがあります。 変数のスコープは宣言時に決定します。 異なるスコープを持つ変数間で名前の競合エラーを避けるために、すべての変数を明示的に宣言することをお勧めします。 すべてのモジュールには、Option Compare Database と Option Explicit という 2 つのディレクティブ ステートメントがあります。 詳細については、「 スコープと可視性について」、「 パブリック ステートメント」、「 プライベート ステートメント」、「 静的ステートメント」、および 「変数の有効期間について」を参照してください。
変数の保持
変数を作成したオブジェクトがスコープから外れた後に変数が存在する必要がある場合があります。 これを行うには、 パブリック変数、 TempVar、およびローカル テーブルへの値の格納の 3 つの主要な方法があります。 それぞれに長所と短所があります。 多くの開発者はこれらを組み合わせて使用しています。
パブリック変数と TempVar は現在のセッションに存在し、アプリケーションが閉じられるとスコープから外れます。 セッション間でユーザー固有の変数を維持したい場合はどうすればよいですか? これらの種類の値は、ローカル テーブルに格納できます。 Northwind 2.0 Starter Edition では、SystemSettings というテーブルにこれらの値があります。 たとえば、テーブル内の値は "ShowWelcome" です。 この値は、ログインするたびにようこそ画面を表示するかどうかを示します。
エラー処理
Access に組み込まれているコントロール ウィザードを使用したことがある場合は、マクロが作成された場合、エラー処理がまったく行われないことが多く、VBA が作成される場合は、 MsgBox 関数、 Err.Description スタイルに制限される可能性があることをご存知でしょう。
Northwind 2.0 Starter Edition では、グローバル エラー ハンドラーと呼ばれるものを実装しました。 任意のプロシージャで発生するエラーは、グローバル レベルで関数を呼び出してエラーを表示します。 大きな利点は、コードに一貫性があり、エラー番号を表示したり、エラーをファイルに記録したりするなど、メッセージを変更する必要がある場合に、1か所でのみ実行できることです。
clsErrorHandler は、エラー処理コードを実装するクラス モジュールです。 クラス モジュールは、すべてのメイン関数とヘルパー関数を 1 つの単位にまとめて保持し、コードをよりカプセル化します。 AutoExec マクロは、最終的に modStartup でスタートアップ関数を呼び出し、clsErrorHandler のインスタンスを作成して、アプリケーション全体で使用できるようにグローバル変数として保存します。
実際、プロシージャのエラー処理コードは非常に一貫しているので、各プロシージャに適切なエラー ハンドラを装備した派手な VBA コードを使用して、5 分もかからずにすべてのエラー処理コードを作成することができました。 このコードはテンプレートには含まれません。