クラスモジュール 05 標準モジュールとの比較で違いをあぶり出す

Excel VBAの世界でよく議論されるトピックの一つ、クラスモジュールと標準モジュール。
これらの違いは何でしょうか?
今回の動画では、
同じ機能を「標準モジュールだけを使って実装する方法」と
「クラスモジュールを用いる方法」で比較し、それぞれの特徴と利点を明らかにします。
この比較から何が見えるのか?
具体的なケーススタディ(空実装ですが)を通じて、
特に、よく使われる(しかし私には嫌われる(^^))Publicステートメントに焦点を当て、
その使い方と影響について掘り下げます。
いきなり比較した説明を聞いてよくわからんという方は
以下の動画も参考にしてみて下さい。
■参考URL
クラスモジュールシリーズ 一気通貫
• クラスモジュール 01 オブジェクトのモヤモ...
クラスモジュール 02 始める前に必要な前提知識や経験
• クラスモジュール 02 始める前に必要な前提...
■タイムライン
0:00 - クラスモジュールと標準モジュールの比較についての概要
0:30 - 標準モジュールの特徴と使用例
2:00 - クラスモジュールの特徴と使用例
3:30 - 両モジュールの比較と分析
5:00 - Publicステートメントについて(所感)
#ExcelVBA
#クラスモジュール
#標準モジュール
#VBAプログラミング
#Excel開発

Пікірлер: 10

  • @KH0183
    @KH0183 Жыл бұрын

    この動画でクラスモジュールの存在意義についてとても分かりやすく教えていただきました。ありがとうございます。

  • @vba-wonder

    @vba-wonder

    Жыл бұрын

    ご視聴いただきありがとうございます! 拙い話ですが参考になれば幸いです。 クラスは個人的にはVBAの中では最難関に該当する技術だと思っています。 (クラスモジュールと標準モジュールでできることの違いは大差ないように見えてしまうので 説明が難しいといつも感じています・・) 他の動画など色々アップしておりますので参考にしていただければと思います。

  • @nobuq59
    @nobuq597 ай бұрын

    クラスモジュールに特化した動画は初めて見ました。参考になります。質問ですが、カプセル化するということだけでしたら、クラスモジュールに書かなくても標準モジュールに書けばいいはずですが、それでもクラスモジュールに書くのは何かメリットがあるのでしょうか。

  • @vba-wonder

    @vba-wonder

    7 ай бұрын

    コメントありがとうございます! 標準モジュールで事足りるかどうかは要件次第になるかと思います。 標準モジュールを使う場合ですと、 インタンスが作れない(と思います)ことが大きな違いになると思います。 私の業務経験では、 シートにある「表1個」をオブジェクトとして作るというよりも その「表の中の1行」を1オブジェクト(インストタンス)として、それらを行数分だけ作成して、 処理をする形を取っていました(テンプレート、たい焼きの型として使用する)。 このような使い方(同じ型をもつインスタンスを複数作る)をすると 標準モジュールの実装では使い勝手が悪くなると思っておりますです。 参考になれば幸いでございます。 引き続きましてご視聴よろしくお願い致します!

  • @takebom207
    @takebom207 Жыл бұрын

    第1回から見させてもらってます。 凄く分かりやすく、大変勉強になりますが、 コードの画面を大きくしてもらえると助かりますので 宜しく御願いします。

  • @vba-wonder

    @vba-wonder

    Жыл бұрын

    ご視聴ありがとうございます! 画面について承知しました。 動画配信は慣れて無いところが多くて恐縮ですがいろいろ試してまいります。

  • @deekiti1806
    @deekiti18068 ай бұрын

    まじで分かり易い。 この理由がいまいちわからんかったからクラスを使う意義がピンとこなかった。 プログラマーじゃない社内でvbaやってる程度なら尚更クラスが無くてもイケるし、むしろ覚える手間とか考えると

  • @vba-wonder

    @vba-wonder

    8 ай бұрын

    コメントありがとうございます! クラスモジュールを使えるようになるにはそれなりのコストがかかってしまうと思います。 一方で、クラスモジュール化するための考え方のような部分は 標準モジュールにも当てはまることも多いのでそれはそれでありなのではと思うところもあります。 ご指摘のように割に合うのかどうかは皆様次第というところでしょうか。微妙ですね・・^^; 引き続きましてご視聴よろしくお願い致します!

  • @user-dt5ww5tf7i
    @user-dt5ww5tf7i3 ай бұрын

    んー、 仰りたいことは解るのですが、これは使いどころによって分けて使うものですね。 スコープを設定したい場合はクラス、全体を通して使う場合は標準モジュールとすると良いと思いますよ。 もちろん、変数を直接Publicで使うのはマズいと思います。どこで使われていてどこで変な値が設定されるか発見し難いですからね。 なので、標準モジュールでも変数を直接Publicにするのではなく、プロパティを作成してそれを介在してやり取りをするようにすれば、そこにBreakPointを設定して実行すれば、おかしな値が入ったところでトレースして行けばどのモジュールのどの関数またはメソッドで呼び出されて変な値が設定されたか分かると思います。

  • @vba-wonder

    @vba-wonder

    2 ай бұрын

    こちらも、コメントありがとうございます!(^^) 最近ではPublicが必要となるケース自体が「コードの匂い」として感じています^^; とはいえ、Constでプロジェクト全体で使うものはPublicで定義していますが、 Public自体を使わないという点はできるだけ徹してやるようにしています。 プロシージャの戻り値として使えれば、 おっしゃるように値を直接いれるのではなく、データの出入り口を一箇所にでき、 かつそのプロシージャの中で値がチェックできる効果もあって尚良しですね。 ありがとうございます。 引き続きましてご視聴、ご意見よろしくお願い致します!

Келесі