ffftp さんの引用:
変数をPublicで設定すると、引数を渡さずにファイル内で使用できると認識しております。
最初、何をおっしゃっているのか判りませんでした。
引数無しのプロシージャであれば、引数無し になるのは当たり前ですし・・・と・・
通常なら、引数を持たせるプロシージャ であるが
引数ではなく、Public変数 に 引数となるべき値を予め渡しておけば、
プロシージャに 引数を渡さなくとも良い
という事ですね。
まぁ、そういう方法も採れますね。
でも、Public変数という事は、明示的に その変数を解放しない限り
そのVBAプロジェクトが終了するまで 値を持ち続けます。
プロシージャレベル変数であれば、そのプロシージャが終了すれば解放されます。
変数を、無駄に Public とすると、その分、メモリーを消費します。
また、質問文の様な使い方をする前提で、Public変数としたとき、
その値と違う値を 保持したい時、同じ型の変数を更にPublic変数で宣言しますか?
また、使い方によっては、使う前に、いちいち、初期化処理を行う必要がある場合も出るでしょう。
Publicにすれば特別であるから、その数は少なくて済みますが
お考えの様に、すべからく全ての変数を Public にしたとき、
それらについて、どんな型の変数で、どんな値を持たせているのか 覚えておく必要があります。
開発時にはフローを覚えていて、理解できても、
メンテナンス時に、複数のプロシージャに渡って、変数が使われている場合
それらを確認しないとメンテナンスが行えませんよね。
Publicにすると、すべてのプロシージャに対し、代入を行っている処理を探す必要があります。
ByVal 引数付きのプロシージャなら、
そのプロシージャ内で その引数自体を参照はしても、書き換える事はできませんから
【書き換えを行っている箇所を探す】行為から見たらプロシージャ宣言部で判断できので楽です。
実行環境のメモリ量は 昔に比べたら多くなっていますから、メモリ量を気にする必要はないかも知れません
でも、メンテナンスを考えると、賛同しかねます。
また、引き合いに出されている 引数 ですが、
フォルダ・ファイルの ツリー構造を 取得する際の様に、再帰処理 を行う場合、
Public で 宣言して、同じ様にできるか? というと、できません。
再帰呼び出しの考え方
https://www.moug.net/tech/exvba/0150117.html