- ベストアンサー
VBA モジュールレベル・パブリックレベルの変数
- Excel VBAにおいて、変数の使い方にはプロシージャレベルを推奨する傾向があります。
- モジュールレベルやパブリックレベルの変数は、上手な人はあまり使わない傾向があります。
- モジュールレベル・パブリックレベルの変数を多く使う場合、ソースコードが見づらくなる傾向があります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> モジュールレベル・パブリックレベルの変数って、一番上に沢山書いていくと、プロシージャを記述する > スペースを下に追いやってしまい、ソースが見苦しくなる気がします 根本的な問題はそれではありません。 スコープ(つまり変数やメソッドなどの宣言部分)適用範囲が広くなればなるほど、 明確な責任範疇がわからなくなり、結果的に悪品質・バグの生み出し易いものが 出来上がるからです。 VBAでは各シート、標準モジュール、クラスが使えると思いますが、 最も悪なのは、以下がすべて当てはまることでしょう。 ・何か処理を書きたい時に、何かにつけていつも標準モジュールを利用している。 ・スコープの狭くていい変数、メソッドすらPublicに定義している。 ・関係性のない変数、メソッドを全て同一の標準モジュールに組み込んでいる。 綺麗に書こうとする人たちは、まずそれがどういった分類にカテゴライズされるものなのかを 明確に切り分け、更にそれぞれの命令の責任範疇を明確にします。 責任範疇を切り分けて処理を細分化することによって、障害が発生した際の障害位置の特定と、 他のロジックへの影響力を小さくするからです。 上手な人は恐らく、よほどのことがない限り、変数が多くなるということはありません。 なぜなら、責任範疇を切り分けている時点で、変数の使用が限られるからです。 それでも変数が多くなる時は、それぞれの変数がどういった分類にカテゴライズされるのかを 再考し、クラスやメソッドを切り分けるべきか、1つのカテゴライズされた変数を1つ定義するか などとなります。 こういった事柄は、一人でやっていても身に付きません。 なぜなら、一人さえ覚えていればなんら問題がないからです。 一人でやるとき、他人がコードを修正する、もしくは拡張して何かを追加する時には どういったコードだと分かりやすいか、それを念頭に考えれば少しずつ綺麗になるし、 上手い人はどういうコードを書くのか、ネットで調べるのも勉強になります。
お礼
ありがとうございます。他人の書くコードをネットで見たりはしているのですが、サンプルのダウンロードなどもしてみようと思います。標準モジュールばかり利用していますが、それも考えなおしてみます。