- ベストアンサー
VBAプロシージャで値を渡す方法
- エクセルVBAのプロシージャで値を渡す方法について解説します。
- プロシージャ内で値を渡すためには、引数を使用する必要があります。
- 具体的な例として、メインのプロシージャから別のプロシージャに値を渡す方法を説明します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Private Sub test_main() Dim drink As String Dim alcohol As String drink = "cola" alcohol = "bear" Call test_module(drink, alcohol) End Sub もしくは Private Sub test_main() Call test_module("cola", "beer") End Sub にしてください。 また、一番最初の行に Option Explicit と入れておくと、今回の場合エラーが出るようになるので何かの助けになるでしょう ちなみに、オプションの「変数の宣言を強制する」にしておくと勝手に付加されます それと、以下のページも参考にしてください。 Excelでお仕事 プロシージャ間の変数の受け渡し(その2) http://www.asahi-net.or.jp/~ef2o-inue/vba_k/sub04_200_100.html 変数のスコープはこちらを参考に エクセルVBA講座「変数のすべて」 第5回 変数の適用範囲(スコープ) http://pc.nikkeibp.co.jp/pc21/special/2007_gosa/eg5.shtml またCallは省略することもできます Office TANAKA Callステートメント http://officetanaka.net/excel/vba/statement/Call.htm
その他の回答 (1)
- kmetu
- ベストアンサー率41% (562/1346)
> drink = "cola" > alcohol = "bear" > と定義しなければならず、二度手間だなと思っていましたが、 定義しているのではなく、質問に書いていた 値「cola」と「beer」は変数「drink」と「alcohol」に代入 をしています > Call test_module("cola", "beer") > とすれば、宣言もせずに直に入れたい値を渡せるのですね。 > ””でくくればいいのには気がつきませんでした。 変数は数値ではなく、文字列です。 だから""でくくるということですので勘違いないようにしてください。 数値の場合は""でくくりません。
補足
回答ありがとうございます。 質問した後、紹介してくれたサイト(エクセルでお仕事)を見つけました。 値を渡すのに drink = "cola" alcohol = "bear" と定義しなければならず、二度手間だなと思っていましたが、 Call test_module("cola", "beer") とすれば、宣言もせずに直に入れたい値を渡せるのですね。 ””でくくればいいのには気がつきませんでした。 ありがとうございます。