- KotorinChunChun
- 41798
- 71
- 41
- 337
#VBA で #クラス が出来るまでの流れ① 1.なんかいっぱい変数ができる 2.複数のプロシージャで共有したくて同じ引数を付け始める 3.面倒になってモジュール変数にする 4.変数セットを複数作りたくて、それぞれを配列にする 5.面倒になってやっぱりやめる 6.クラス化して量産できるようにする
2020-02-10 21:34:12#VBA で #クラス が出来るまでの流れ② 1.なんかいいっぱい変数ができる 2.複数のプロシージャで受け渡したくなる 3.Typeで一つにまとめる 4.複数セット作りたくてType配列にする 5.やっぱりDictionaryで管理したくなるがTypeは入らない 6.クラス化して量産できるようにする
2020-02-10 21:34:12#VBA で #クラス が出来るまでの流れ③ 4.②と同じ理由でType配列にする 5.複数の列を繋いで使う構文が出来た 6.そこら中で使われ初めて、ルールの確認が面倒になってきた 7.クラス化してルールに沿った結果を返すプロパティを追加した (例:管理番号 & "_" & Format(年月日, "yyyymmdd") & ".xlsm")
2020-02-11 17:48:41VBAのデータ構造の進化系リスト モジュール変数群 → Dictionary(列名Const群) → Dictionary(列名Const群)(行数) → Dictionary(列名Const群)(Dictionary(キー)) → 配列(Enum) → 配列(Enum, 行数) → Type → Type(行数) → Class → Class(行数) → Class(Dictionary(キー))
2020-02-11 14:46:19はけた様
このプログラムはクラスモジュールをガンガン使って実装しています。 データ量が多くなると、クラスモジュールを使わない実装だと、相当速度が遅くなると思います。 なので、クラスモジュールが使えないなら、たぶん仕様自体を変えざるを得ません。 twitter.com/excelspeedup/s…
2020-02-10 22:16:11私が作った、他ではあまり見かけないVBAマクロというと、仕訳入力シートのレイアウトが動的に変わるものくらいですかね。 pic.twitter.com/AEceod4PqR
2020-02-08 22:53:12私が作った、他ではあまり見かけないVBAマクロというと、仕訳入力シートのレイアウトが動的に変わるものくらいですかね。 pic.twitter.com/AEceod4PqR
2020-02-08 22:53:12でも、実際は、設計次第でクラスモジュールを使わないでも速くなるのかな?ひょっとしたら。 自分の腕が悪いだけかもしれません。
2020-02-10 22:22:06VBAのクラスは「中身に触れる必要がなければ」メインロジックがスッキリするので、むしろ初心者に優しいと思います。 問題は、中身に触れる必要が出てしまったときですね。一気に、初心者に厳しくなります。
2020-02-10 22:06:48@hoehoe1234 何きっかけでmapが理解できるようになったのか、まったく覚えがないんですよね。 ただ、ある時点で、なぜか「あたりまえ」になりました。
2020-02-10 12:02:22VBAじゃないですけど、昔、map関数が分からず、理解が止まったりとかしてましたからね。今は、mapを使わないと逆に読みづらい感がありますが。 VBAだと、クラスがないと、書きにくくてしょうがないですが、初心者には、優しくないんでしょうね。
2020-02-10 11:49:38reime様
「複数の値を返す関数」っぽいのを作るテクで、引数をByRefで渡して呼び出し先で変更するのがあるけど、 あれやるくらいならクラス作ってプロパティを設定するほうがわかりやすいと思う。
2020-02-10 22:22:20VBAのクラスモジュールは別に特別な機能でも難解な機能でもないでしょう。 Functionプロシージャと同じくらい気軽に使って良いと思う。
2020-02-10 22:52:20ただコードが複雑になるにつれて、だんだんとわけがわからなくなる。 それでコードをすっきりさせる為にプロシージャを分割するようになり、もっと複雑になるとクラスを挿入するようになる。要するにコードを完結にする記法。 さらに複雑になったら?VBAじゃない言語でやるべきじゃないかな。
2020-02-10 23:08:13その他の意見等
クラスを使わないという選択肢はないやろ。 とは言え無理に使う必要もないだろう。データー構造と操作をカプセル化することで恩恵を受けるのは、標準モジュールがある程度の規模を持ち、内部構造を意識すことなくプログラミングしたい場合だろう。
2020-02-10 22:46:57@KotorinChunChun @_reime ですね。ワイも実質、メモリ内容を書き込んで型変換(型バインド)するためぐらいにしかつかっていません。なんといってもバリアントバインド不可、コレクション系不可、その他制限多い。ということがありますので涙とともに配列で多値w
2020-02-11 01:24:16最後に
@ichina970803 頭空っぽにして読み返すと、実体験のない人には共感できないので意味不明かもしれませんね。 途中工程をすっ飛ばして、説明だけ聞いてクラスを理解しようとすると無理があるんだと思います。 いっぱいコードを書いて、試行錯誤しているうちにクラスにたどり着いた人が多いんじゃないかと。
2020-02-11 11:06:13このTogetterは @KotorinChunChun が日々の思い出のためにまとめました。
趣味でExcelやVBAのブログ書いてます。よろしくおねがいします。