何かと仕切りの高いクラスモジュールですが、マスターしたい気持ちも駆られて頑張っています。
以前に紹介した、ExcelVBA 実践のための技術を熟読した結果です。
目次
クラスモジュールのプロパティ
こんにちは。伊川(@naonaoke)です。
何かと仕切りの高いクラスモジュールですが、マスターしたい気持ちも駆られて頑張っています。
以前に紹介した、ExcelVBA 実践のための技術を熟読した結果です。
クラスモジュールを勉強していますが、なかなか難しいです。
派手なアクションを求めるより、基礎も勉強しようと思い、下記の書籍を熟読しました。
わずかな行数ですが、こんなにも奥が深いのかと思う内容でした。
少しだけまた、理解が深まり、うれしい気持ちになっています。
VBAを実行しても、本当にカンタンな内容です。
わざわざ、クラスモジュールを使う必要がない内容です。
はっきり言ってつまらないです。
しかし、このつまらない内容に、クラスモジュールで、プロパティの設定、呼出が詰まっています。
このブログはこんな人にお勧め
- ExcelVBAを勉強している人
- クラスモジュールが何か理解できていない人
- クラスモジュールを利用して、かっこいいコードを書きたい人
このブログを、読み終わるころには・・・・
いきなり、読んでも多分理解できません。
もし、ExcelVBA 実践のための技術を持っているなら、このブログを読んだ後に、
もう一度、ExcelVBA 実践のための技術9章を読み返していただくと、理解できるかもしれません。
クラスモジュールのプロパティの設定
クラスモジュールに関しては、作成者側で、自由にプロパティを設定できます。
この、プロパティを設定できる、有難味を理解できないと、クラスモジュールを勉強する意欲がわかないです。
この、有難味を理解できるまで、勉強を続けるつもりです。
Excelに、自由にプロパティを設定できるなんて、夢のような話ですね。
Rangeは、ご存じの通り、Rangeプロパティです。
クラスモジュールから、Rangeの兄弟ができるのです。
プロパティを設定・呼出 作業手順 その1 実行したいこと
たったこれだけのことです。
Range(“B1”)=Range(“A1”)と記載すれば、それで終了です。
しかし、このRange(“B1”)=Range(“A1”)を、クラスモジュールに実行するに当たり、とても重要なことを含んでいます。
プロパティを設定・呼出 作業手順 その2 クラスモジュールのコード
このようなコードになります。
ExcelVBA 実践のための技術を、読んだときもそうですが、同じような言葉が、沢山あります。
tenkiP⇒これが一番重要で、プロパティを設定します。(PはプロパティのP)
tenkigo⇒転記を実行する関数のような働きをします。(goは、実行するという意味合いのgo)
tenkiA⇒tenkiPに値を代入する引数てきな役割をします。(Aは、argument(引数)のA)
ここの理解をしてほしいです。
この理屈を理解しないと、クラスモジュールに関しては、単純にコードが長いと思い、面倒になると思います。
プロパティを設定・呼出 作業手順 その3 標準モジュールのコード
F8で、実行すると、理解できると思います。
プロパティを設定して、プロパティを呼び出すということになります。
プロパティを設定・呼出 作業手順 その4 プロパティの設定とは?
この、tenkigo しか見えないのがミソです。
このPublic Property Letでは、作成者が、自由にプロパティを設定できるのです。
そして、外部から、tenkiP = tenkiAの、秘密は保持されます。
これが、カプセル化というものでしょうか?多分?
師匠がいないので、申し訳ないです。
クラスモジュールを勉強している人へ
このブログで何度か紹介していますが、クラスモジュールを勉強するには、下記の書籍がお勧めです。
クラスモジュールが書籍化されている、数少ない本です。
また、クラスモジュールを理解するには、オブジェクト指向という考え方も必要です。
しかし、VBAを勉強していくには、良書です。
間違ってるやんとコメントした本人です(笑)
まず初めに私は伊川さんのアンチではなくファンの一人だと言っておきます。
息抜きに拝見し、楽しませていただいております。クラスモジュールの理解のヒントになるかはわかりませんが、
例えばWorkSheetFunctionてあるじゃないですか。
エクセルの関数を使えるやつですけど、あれってWorkSheetFunctionクラスなんですよね。
WorkSheetFunctionの関数使うときWorkSheetFunction.〇〇って書くじゃないですか。
これってクラスモジュールを使うときに似てますよね。
ほかのいろんなメソッドやプロパティも親オブジェクトを省略できるのでわかりづらいかもしれませんがこういう構造になっていますよね。普段はExcelで初めから用意されているクラスモジュールのメソッドやプロパティを使っているようなものなのです。
クラスモジュールというのはメソッドやプロパティを自分の好きなようにカスタマイズできるということなのです。
ですから、前の動画で単価×数量のクラスモジュールを紹介していましたが、使い方は別に間違っておりませんがインスタンスなどの考え方が間違っております。
インスタンスによって生成されるクラスモジュールは単価と数量というプロパティを持ち、二つをかけるというメソッドを持った計算機です。インスタンスによってその構造は変わりません。セットしたプロパティが変わることでメソッド実行時の結果が変わるだけです。
私もまだ勉強中ですが一応このような感じで理解しております。
次の動画も楽しみにしてます。長々とすみません。
確かにインスタンスを、単価と数量と言っていました。
ご指摘ありがとうございました。
ここがポイント
ExcelVBA 実践のための技術は、クラスモジュールを記載している、数少ない書籍です。
とても分かりやすく、記載されていますが、クラスモジュールを初めて読む人には難しいと思います。
9章では、生徒の名簿をサンプルにクラスモジュールを実行します。
でも、今回紹介した、部分を理解していないと、流し読みになる可能性があります。
カッコよくコードを書きたい人は、是非一読してみてください。
まとめ
前回の動画で、間違いを指摘されました。
しかし、私のファンの方のようです。
クラスモジュールを勉強するのは、孤独な道のりですが、頑張りたいと思います。
今回も最後まで読んでいただきありがとうございました。
今回のサンプルファイルは、No277です。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。