ACCESS VBA Privateプロシージャとは

Privateプロシージャとは

ACCESS VBAではプロシージャという単位でプログラムを作成します。
プロシージャを作成する際、最初に

と記述すると思いますが、このPrivateはどんな意味か分かるでしょうか?

今回は、ACCESS VBAで利用するPrivateプロシージャについてご紹介します。


こんにちは。
はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは基本機能だけでも十分便利ですが、VBAを使うことで格段に使いやすいデータベースを作成可能です。
この記事ではACCESSでのVBAの使い方をご紹介していきます。

Privateプロシージャとは

Privateプロシージャとは、プロシージャ名の最初がPrivate Subで始まるプロシージャです。
VBAでプロシージャを作ると通常は

で始まると思います。

これは、特定のクラスオブジェクト(フォームやレポート)の中でだけ利用可能なプロシージャであることを示しています。
VBE(Visual Basic Editor)の画面でいうと、同じページの中に記述されたプロシージャ群の中でだけ相互に呼び出し可能なプロシージャです。

ACCESS VBAのプロシージャは基本的にPrivateプロシージャで作ることを前提にしています。

Publicプロシージャとは

Privateプロシージャと相対するものとして、Publicプロシージャがあります。
Publicプロシージャは

で始まります。

Publicプロシージャは他のプロシージャから自由に呼び出しすることができるので、ACCESSデータベース内の様々なオブジェクト(フォームやレポート)で共通的に利用する処理はPublicプロシージャで作成する方が効率がよくなります。

PublicプロシージャとPrivateプロシージャの違い

PublicプロシージャとPrivateプロシージャの大きな違いは、他のプロシージャから呼び出しができるか否かです。
以下に違いをまとめました。

Publicプロシージャ

Publicモジュールにあるプロシージャは他のモジュールにあるプロシージャから呼び出しが自由に行えますが、クラスモジュールにあるプロシージャは他のオブジェクトにあるプロシージャからの呼び出しができません。
実際のACCESSの画面でご説明します。

ACCESSを起動してALT+F11キーを押すとVBE(Visual Basic Editor)の画面が表示されます。

左側のツリー上のビューになっているプロジェクトを見てください。
クラスオブジェクトと標準モジュールという2つの区分があります。

クラスオブジェクトとは、フォームやレポートなど、ACCESSで作成したオブジェクトに紐づくプロシージャの集まりです。
例えばメインメニューフォームのクラスオブジェクトにはメインメニューフォーム内で利用可能なVBAのプロシージャを記述します。

クラスオブジェクトにはPrivateプロシージャを作成します。
このPrivateプロシージャは、同一オブジェクト内のプロシージャ(例えばメインフォーム内の別プロシージャ)からは呼び出しできますが、他のクラスオブジェクトのプロシージャからの呼び出しはできません。

一方の標準モジュールは特定のオブジェクトに依存しない、いわばVBAだけの独立したプロシージャ群です。
標準モジュールにPublicプロシージャを作成すると、他のクラスオブジェクトのプロシージャから呼び出しすることができます。

上記を意識して、PrivateとPublicプロシージャを使い分けてください。
クラスオブジェクトにはPrivateプロシージャ、標準モジュールにはPublicプロシージャという使い分けがわかりやすいでしょう。

以上、ACCESS VBAで利用するPrivateプロシージャについてご紹介しました。


ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。

ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

サービス一覧

最後までお読みいただき、ありがとうございました。