- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA subで戻り値指定するか宣言セクションか)
VBAでの戻り値指定の方法についての比較
このQ&Aのポイント
- VBAでサブプロシージャから別のプロシージャを呼び出し戻り値を取得する方法として、方法1と方法2があります。方法1では共通変数を使い、方法2では引数を使用して戻り値を指定します。方法1の利点は共通変数が一番上で宣言されているためわかりやすい点ですが、再利用時に配慮が必要です。一方、方法2はサブプロシージャ同士が独立しており、切り貼りが容易ですが、サブの数が増えると変数の管理が必要となります。一般的には、再利用性を重視する場合には方法2を、変数の管理を容易にしたい場合には方法1を選ぶことが多いです。
- VBAでの戻り値指定の方法として、方法1と方法2があります。方法1では共通変数を使用して戻り値を取得し、方法2では引数を使用します。方法1は共通変数が一番上に宣言されているためわかりやすく、別のモジュールでの再利用時には注意が必要です。一方、方法2はサブプロシージャ同士が独立しており、切り貼りが容易ですが、サブの数が増えると変数の管理が必要となります。一般的には再利用性を重視する場合には方法2を、変数の管理を容易にしたい場合には方法1を選ぶことが多いです。
- VBAでの戻り値指定の方法には、方法1と方法2があります。方法1では共通変数を使い、方法2では引数を使用して戻り値を指定します。方法1の利点は共通変数が一番上で宣言されているためわかりやすい点ですが、再利用時には注意が必要です。一方、方法2はサブプロシージャ同士が独立しており、切り貼りが容易ですが、変数の管理が必要となります。一般的には、再利用性を重視する場合には方法2を、変数の管理を容易にしたい場合には方法1を選ぶことが多いです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ケースバイケース。でも変数のスコープ考えたら方法2か。 しかし、Functionを使わないのには何か理由があるのですか? 例示のコードは簡略化されてるのはわかるが、 処理に必要な変数が多くなると大変かも。 Option explicit ---------------------- sub A() dim x as long X = funcB() 'call B end sub Function funcB() as long funcB = ~ end function 方法2 戻り値xを指定します。 sub A() Dim x As Long call B(x) end sub
お礼
ありがとうございます。 スコープについて調べました。戻り値を指定したとしても、sub AとsubBで変数が違っててもいいようですね。 sub A() Dim a As Long call B(a) end sub --------------- sub B(Byref b As Long) b=~ end sub ということは、AとBで変数を統一する必要は無いってことですね。 もうひとつ、引数が多くなりつつあるのは実感してます。functionは戻り値がひとつしか使えないので、現状ではあまり使ってません。