クラスモジュール、というものがある。クラスって、何?それが多くの人の受け取り方だろう。さて、クラス、といって何を連想するだろうか?
飛行機の座席などもあるが、ここは小学校の「クラス」をイメージして頂きたい。
仮に同姓同名で、酒盛好子さんがいたとしよう。一人が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ブックに集めて部品として再利用したいな、という場合があった。
もし標準モジュールだとプロシージャ名やファンクション名が重複するとコンパイルでエラーが発生するが、クラスモジュールはモジュール名が重複していない限りはそのまま使える。
前者と後者では、後者の方が調査も変更もやりやすいのだ。
これはクラスファイルの特徴の一つだが、「クラス」は、まずはこのようなイメージで捉えると分かりやすいのではないかと思う。
※書き直し /八月末削除予定 /クラス
ブログトップへブログ内検索キーワード
クラス
クラスモジュール