アクセス上位ページ
 
最近の更新内容
(1)-j.引数の参照渡し・値渡し ⇐ [PREV]
[NEXT] ⇒ (1)-l.プロシージャのスコープ

Excel VBA ≫ 1.基礎編 - はじめに(1)-k.プロシージャの呼び出し

プロシージャの呼び出し方法

Sub プロシージャ

Subプロシージャを呼び出す方法には、呼び出すプロシージャに引数があるかないかCallステートメントを使用するか否かによって記述方法が異なります。
Callステートメントは使用してもしなくてもどちらでも問題ないので、自分がコードを見てわかりやすい方を選ぶとよいでしょう。



  • 呼び出すSubプロシージャBに引数がない場合
  • 【構文】
    Sub プロシージャA()
    
        Call プロシージャB
    
    End Sub
    
    または、
    Sub プロシージャA()
    
        プロシージャB
    
    End Sub
    
  • 呼び出すSubプロシージャCに引数がある場合
  • 【構文】
    Sub プロシージャA()
    
        Call プロシージャC(1, "abc")
    
    End Sub
    
    または、
    Sub プロシージャA()
    
        プロシージャC 1, "abc"
    
    End Sub
    
    ※"Call"ステートメントを使用しない場合は引数をカッコで括ってはいけません。


    ◆プロシージャCを呼ぶ出すサンプル(その1)◆

    前ページで作成したサンプル用モジュールに以下のコードを貼り付け、 プロシージャAを実行(⇒マクロの実行)してみましょう。

    Sub プロシージャA()
    
        Call プロシージャC(1, "abc")
    
    End Sub
    
    Sub プロシージャC(intA As Integer, strB As String)
    
        MsgBox "第1引数は『" & intA & "』、第2引数は『" & strB & "』です。"
    
    End Sub
    

    <実行結果> プロシージャA実行結果(その1)
    ◆プロシージャCを呼ぶ出すサンプル(その2)◆

    上記の例では引数a、bを順に指定していましたが、名前付き引数を使用すると、 引数を任意の順で指定することができます。 名前付き引数を使用する場合はコロン(:)と等号(=)につづけて値を指定します。
    この方法は省略可能な引数が多いプロシージャに対して、一部の引数にのみ値を設定したい場合に便利です。

    Sub プロシージャA()
    
        Call プロシージャC(strB:="abc", intA:=1)
    
    End Sub
    
    Sub プロシージャC(intA As Integer, strB As String)
    
        MsgBox "第1引数は『" & intA & "』、第2引数は『" & strB & "』です。"
    
    End Sub
    

    <実行結果> プロシージャA実行結果(その2)

Function プロシージャ

Functionプロシージャを読みだす方法はSubプロシージャを呼ぶ場合と全く同じです。 ただ、Functionプロシージャには戻り値があるため、基本的には代入演算子(=)の右側に記述して 戻り値を変数で受ける形になります。
  • 呼び出すFunctionプロシージャDに引数がない場合
  • 【構文】
    Sub プロシージャA()
    
        Dim rtn as Integer
        rtn = プロシージャD
    
    End Sub
    
  • 呼び出すFunctionプロシージャEに引数がある場合
  • 【構文】
    Sub プロシージャA()
    
        Dim rtn as Integer
        rtn = プロシージャE(1, 2)
    
    End Sub
    

管理人から一言・・・ 引数には'式'を設定できる。
今までの例では引数に単なる数値や文字列のみを指定してきましたが、引数には'式'を設定することができます。'式'とは最終的に数値や文字列に評価されるもので、算術式などがこれにあたります。式にはFunctionプロシージャを含めることができるので、引数に直接Functionプロシージャを指定することもできます。
カテゴリ内ページ



Page
Top