• ベストアンサー

エクセルVBA サブルーチンの使い方

下記コードにて、MSGBOXで88を表示するには、どう変更すればよいですか? Sub aaa() bbb MsgBox b End Sub Sub bbb() b = 88 End Sub

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 (1)bbbプロシージャに引数を付ける Sub aaa() Dim b bbb b MsgBox b End Sub Sub bbb(ByRef a) 'ByRefキーワードは省略可 a = 88 End Sub (2)bbbをFunctionプロシージャにする Sub aaa() Dim b b = bbb MsgBox b End Sub Function bbb() bbb = 88 End Function (3)変数をモジュールレベルで宣言する Dim b Sub aaa() bbb MsgBox b End Sub Sub bbb() b = 88 End Sub

VitaminBB
質問者

お礼

回答ありがとうございます。 いろいろな方法があるのですね。 今後は教えていただいた方法を基本として、使っていきたいと思います。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

・#2のお答えにも出ていますが、引数は値を渡すのに多く使われると思いますが、値を受け取って、乗せて戻る(この説明はイメージだけです)にも使えるようです。 しかし「通常呼び出される側での引数の値の変更はあまり行いません」と、ある解説書にありました。 Msgboxはabcが表示される。 Sub aaa() bbb b MsgBox b End Sub Sub bbb(c) c = "abc" End Sub ・普通はFunctionにして値を返す。 ・またはモジュール内で使えるモジュール変数、他のモジュールからも使えるパブリック変数を使えます。 http://www.moug.net/skillup/pmm/dn05-3.htm?PRINT http://www.moug.net/skillup/pmm/dn05-4.htm?PRINT

VitaminBB
質問者

お礼

回答ありがとうございます。

noname#7749
noname#7749
回答No.1

品質を下げることに最大限配慮しています。(毒) 'Option explicit ← 担当者が意味を理解できないのでコメントアウト。 Sub aaa() ' ← 他人に解読できないように意味がなるべくわかりにくい命名を採用。 'bbb MsgBox 88 ' ← 暗黙の型変換に期待。省略可能な引数は省略。 End Sub 'Sub bbb() 'b = 88 'End Sub

VitaminBB
質問者

お礼

回答ありがとうございます。 ”88”がbbb()内にて決定される場合はどうすればいいのでしょうか?

関連するQ&A

専門家に質問してみよう