Excel
VBA

VBA の関数

何度も同じ処理を実行する場合はそれを一塊にまとめ呼び出す事で簡潔に記述が可能である。

処理を纏めた物はプロシージャと呼ばれる使い方は次の通り。

    Sub 呼び出し()
        プロシージャ
    End Sub

    Sub プロシージャ()
        '処理
    End Sub

プロシージャが受け持つ処理に戻り値がほしい場合は広域変数等を通じて示す事になる。

    Dim 返り値
    Sub 呼び出し()
        プロシージャ 123
        MsgBox 返り値
    End Sub

    Sub プロシージャ(引数)
        '処理
        返り値 = 引数 + 1
    End Sub

非常に煩雑で理解が難しくなるため通常は関数プロシージャを利用する。

    Sub 呼び出し()
        結果 = プロシージャ(123)
        MsgBox 結果
    End Sub

    Function プロシージャ(引数)
        '処理
        プロシージャ = 引数 + 1
    End Function
  • VBA ではプロシージャ名に値を代入する事で返り値となる。 (他の言語では return か最終式結果を利用するものが多い)
  • Function の返り値は呼び出し元で値を代入するかIf文などで評価する必要がある。 (他の言語では無視可能が多い)
  • プロシージャ(...) -- 関数形式で呼び出す、戻り値を使う。
  • プロシージャ ... -- 戻り値は使わない
  • Call プロシージャ(...) -- 関数形式で呼び出す、戻り値は使わない。