- KotorinChunChun
- 41725
- 71
- 41
- 337
本題
やっぱ何度勉強しても、Excel VBAのクラスを使う気が起きない。どうしてもクラスじゃなきゃ実現できないってほどのことが、あるのか実務で分からない。
2020-02-10 20:15:35議論なう
@shota_Excellent 大抵のものはクラスモジュールはなくても、どうにかなります。 感覚的には、次のようなイメージです。 ・クラスモジュールを使うと「ちょっと便利」 → 結構ある ・クラスモジュールを使わないと「困る」。 → たまにある
2020-02-10 21:36:50@excelspeedup @shota_Excellent この説にいまさら納得。理由はいろいろあるんですけど簡単なところではクラスの機能が低い+配列を含めて標準関数が便利。ということであまり差がないというか、そんな感じなんですよね。
2020-02-10 21:40:46@hoehoe1234 @shota_Excellent 私の中では、クラスを使うと「ちょっと便利」なのは、 ・コンストラクタ、デストラクタがある ・複数の返り値を返したい場合(Typeの代わり) でしょうか。 これらだけが目的なら、クラスを使わないでも、大抵、どうにかなる印象です。
2020-02-10 21:44:17@_reime @shota_Excellent クラスモジュールに書くのは、オブジェクトのひな形。 とすると、 Worksheet オブジェクトとかRangeオブジェクト。 これらのひな形も同じように書いてあるんですよね。
2020-02-10 21:27:50@biitarou @shota_Excellent VBAで書いてあるわけではないと思いますけどそうですよね。 知らないうちにクラスを使っているのがVBAです。
2020-02-10 21:39:24@_reime @biitarou @shota_Excellent これ、重要な観点で、実はエクセルのクラスを単に使ってるのではなくて「クラスライブラリ」(複数のクラス群が有機的に結びついたもの)を使ってるんですよね。だからめちゃくちゃ使いやすい。VBAではこれができない半端者なので結局クラスは単機能クラス以外は使わない。ってなちゃうんだと思います
2020-02-10 21:45:21VBAのクラスについて
山岡様
一年前には、こんなことを言ってる人がいた。 twitter.com/yamaoka_ss/sta…
2020-02-10 22:02:16無理してクラスを使う必要性はないと思っています。VBAの場合は、完成後にプロではない他人(ユーザー等)にとって易しくわかりやすく書くことが重要だと思います。なので私は極力クラスは使わずに易しいコードで、それでいて速度が速くなるように書くことを心がけています。 twitter.com/sugoi_kaizen/s…
2019-01-27 00:20:46無理してクラスを使う必要性はないと思っています。VBAの場合は、完成後にプロではない他人(ユーザー等)にとって易しくわかりやすく書くことが重要だと思います。なので私は極力クラスは使わずに易しいコードで、それでいて速度が速くなるように書くことを心がけています。 twitter.com/sugoi_kaizen/s…
2019-01-27 00:20:46実は勉強せずにここまで来てしまったんです。クラスに関する是非を含めた知見についてはうちの山岡先生が極致だと思いますので教えを乞うておきたいと思います。 twitter.com/Higo_Daisuki2/…
2019-01-26 22:52:14仕事柄、他人の書いたプログラムを修正する機会は多いです。 そういう時には、元のソースに溶け込むように修正することを意識します。コーディングスタイルを合わせて書きますよ、お仕事ですから。
2020-02-10 11:59:12ほえほえ様
構造体ほしい→せやTypeや→バリアントに入らない→なんならコレクションにも入らない→せやクラスや→1クラス1モジュールまじかよ?→はっ!別ブックでNewでけんの?→staticクラス+ファクトリで解決や→クラスってモジュールだったのね→ならモジュール変数はインスタンス変数と同じやね→
2020-02-10 22:12:02ならクラスは何が便利やねん?→そらnewしたりできることやろ→実は構造体で多値が返したかったのを思い出す→配列でええやん。VBAの配列は値型やからインスタンス変数と同じやで→newの利点ってなんだったけ?ああ、そうだインスタンス変数の共有→ならモジュール変数と同じやん→コンストラクターが
2020-02-10 22:13:59あって便利やね→せやけどこのためにクラス作るほどか?→標準モジュールのモジュール変数初期化できんがな→プロパティ手法あるで→そういやクラスラぶらりが作りたかったり→夢を追いかけるのはやめときや→ならクラスはなんで必要なんやねん→そら参照やから便利やろ→
2020-02-10 22:15:41だけど値クラスのために1モジュールは酷くないか?→しゃーないやん→やっぱり参照の取れる構造体ほしい→もとに戻る。 を10週ぐらい繰り返して今は単独機能モジュール以外はクラスでなくてもええな。という立場。なんと言っても1クラス1モジュールが致命的w。
2020-02-10 22:17:06この統一性のなさがVBAであり良くも悪くもVBA。他の言語では多値の返し方はそれしかないと大体決まっている。クラスを使う使わいなという検討はない。設計レベルでどうクラス群を設計するかという議論になる。VBAという言語系は「これが正しい」という意図があえて隠されている。
2020-02-10 22:31:29なので自由だけど難しい。技術力の優劣がつきにくい。他言語ではれば優劣はコードをみればわかる。VBAでは違うスタイルとなるので優劣というよりもスタイルの問題になる。スタイルに優劣はない。なので多人数での作業は困難になる。どうとでもかけるから。今なら業務ならクラスを外すのは正解だと思う
2020-02-10 22:32:49参照を多用しなければVBAでは実現できないんだけど、これを複数人のうちの一人だけが採用したらメンテナンスできなくなるだろう。多くのスタイルに合わせるしかない。クラスにしても同様。まず使う、使わないから検討しなければいけない。なのでVBAって面白いけど大変w。
2020-02-10 22:37:57