クラスモジュール、というものがある。クラスって、何?それが多くの人の受け取り方だろう。さて、クラス、といって何を連想するだろうか?


飛行機の座席などもあるが、ここは小学校の「クラス」をイメージして頂きたい。


仮に同姓同名で、酒盛好子さんがいたとしよう。一人が1年2組、もう一人が1年3組だと、「2組の酒盛」「3組の酒盛」と、所属するクラス名で修飾することで区分けすることができる。


さて、VBA。標準モジュールなら別のモジュールに書きさえすれば、同じプロシージャ名やファンクション名を使えるか?答えは「両方のケースがある」となる。使えない場合は、両方ともPublicであるとき。使えるのはそれ以外のとき。

同じプロシージャ名やファンクション名で両方ともPublicでも、「どこのクラスの」という修飾子を付けて混在できる、というのがクラスモジュールの一つの特徴である。


つまり、どういつプロジェクト内で


標準モジュールの Module1 に


  Public Function getData(iVal as Integer) As Integer

    (内容省略)

  End Function


標準モジュールの Module2 に


  Public Function getData(iVal as Integer) As Integer

    (内容省略)

  End Function


とは書けないが、


クラスモジュールの Class1 


  Public Function getData(iVal as Integer) As Integer

    (内容省略)

  End Function


クラスモジュールの Class2 


  Public Function getData(iVal as Integer) As Integer

    (内容省略)

  End Function


は記述できる。


私の経験で散在しているVBAソースコードプログラムを1つのExcelブックに集めて部品として再利用したいな、という場合があった。

もし標準モジュールだとプロシージャ名やファンクション名が重複するとコンパイルでエラーが発生するが、クラスモジュールはモジュール名が重複していない限りはそのまま使える。

前者と後者では、後者の方が調査も変更もやりやすいのだ。


これはクラスファイルの特徴の一つだが、「クラス」は、まずはこのようなイメージで捉えると分かりやすいのではないかと思う。



※書き直し /八月末削除予定 /クラス

ブログトップへ
ブログ内検索キーワード
クラス
クラスモジュール