プロが教えるわが家の防犯対策術!

Excel 2007でVBAを組もうとしています。

ユーザーフォームのコマンドボタンをクリックすると動く処理を
Private Sub 内に書きましたが、処理が長くなりましたので、
Subに分けたいと思います。

Private subからSubプロシージャをCallすることはできますか?

またどのSubでも同じ変数を使う場合、定義は、各Sub内で
毎回行う必要がありますか?

引数渡しのところがよく分からないので、すみませんが
よろしくお願い致します。

A 回答 (2件)

こちらが参考になるでしょう



Excelでお仕事
プロシージャ間の変数の受け渡し(その2)
http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub0 …

変数のスコープはこちらを参考に

エクセルVBA講座「変数のすべて」
第5回 変数の適用範囲(スコープ)
http://pc.nikkeibp.co.jp/pc21/special/2007_gosa/ …


またCallは省略することもできます

Office TANAKA
Callステートメント
http://officetanaka.net/excel/vba/statement/Call …
    • good
    • 0
この回答へのお礼

ほんとにありがとうございます。

おかげ様で無事に完成しました。

お礼日時:2011/03/29 21:41

SubよりはFunctionの方が適しているとは思いますが、呼び出しは可能です。



あと、「別々に宣言された変数は常に別物」です。
つまり、変数を使いまわす必要がある場合は引数で参照渡ししてやらなければなりません。
    • good
    • 0
この回答へのお礼

ありがとうございます。

変数を戻す必要がなかったのでSubがいいかなと思いました。

引数の使い方が調べてもよく理解できないでいるのですが、
以下のようなイメージで合っていますか?
全てメイン処理内で変数の宣言をしてそれをサブ処理に
受け渡すという感じですか?

-----------------------------------------------------------
Private sub メイン処理()

Dim 変数1 as Long
Dim 変数2 as Long

Call サブ処理(変数1,変数2)

MsgBox 変数1
MsgBox 変数2

End Sub
----------------------------------------------------------
Sub サブ処理(へんすう1 as Long, へんすう2 as Long)

へんすう1 = 1
へんすう2 = 2

End Sub

----------------------------------------------------------

お礼日時:2011/03/26 09:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています