• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA モジュールレベル・パブリックレベルの変数)

VBA モジュールレベル・パブリックレベルの変数

このQ&Aのポイント
  • Excel VBAにおいて、変数の使い方にはプロシージャレベルを推奨する傾向があります。
  • モジュールレベルやパブリックレベルの変数は、上手な人はあまり使わない傾向があります。
  • モジュールレベル・パブリックレベルの変数を多く使う場合、ソースコードが見づらくなる傾向があります。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

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

absolute_space
質問者

お礼

ありがとうございます。他人の書くコードをネットで見たりはしているのですが、サンプルのダウンロードなどもしてみようと思います。標準モジュールばかり利用していますが、それも考えなおしてみます。

関連するQ&A

専門家に質問してみよう