Excel VBA

VBAで作成したFunctionプロシージャ(ユーザー定義関数)で戻り値として複数の値を返すサンプルプログラムを覚書。

サンプルプログラムは、ExcelのVBAで作ってありますが、Accessでもそのまま使用できます。
スポンサードリンク


Functionプロシージャで複数の値を返す方法

Functionプロシージャで戻り値として複数の値を返す場合、配列変数を使います。

関数の呼び出し側も当然配列変数を用意して戻り値を受け取るようにします。

複数の値を返すFunctionプロシージャのサンプルプログラム

以下は、引数として被除数と除数を受け取って、商と剰余を返すFunctionプロシージャのサンプルプログラムです。

Function FuncDivision(intDividend As Integer, intDivisor As Integer) As Variant
Dim intQuotient As Integer, intRemainder As Integer

'intDividend:割られる数(分子)
'intDivisor:割る数(分母)

    If intDividend >= intDivisor Then
        '商を求める
        intQuotient = Int(intDividend / intDivisor)
        
        '剰余を求める
        intRemainder = intDividend - (intDivisor * intQuotient)
    Else
        intQuotient = 0
        intRemainder = intDividend
    End If
    
    '商と剰余を返す
    FuncDivision = Array(intQuotient, intRemainder)

End Function

関数を呼び出すサンプルプログラム

作成したFunctionプロシージャを呼び出して使用するサンプルプログラムです。
Sub sample01()
Dim arrReturn As Variant
Dim intDividend As Integer, intDivisor As Integer

intDividend = 3
intDivisor = 30

arrReturn = FuncDivision(intDividend, intDivisor)
    
    MsgBox intDividend & " 割る " & intDivisor & "の" & vbCrLf & "商は、" _
    & arrReturn(0) & vbCrLf _
    & "剰余は、" & arrReturn(1) & " です。"
           
End Sub

サンプルプログラムのポイント

Functionプロシージャのポイントとしては、以下のとおりです。

  • 戻り値として配列を使用して複数の値を返すため、FunctionをVariantで宣言している

  • 2つの値を配列で返すためArray関数を使用している。

Functionプロシージャを呼び出す側のプログラムのポイントしては以下のとおりです。

  • 戻り値を配列として受け取るため、戻り値が代入される変数(arrReturn)をVariantで宣言している

  • 戻り値の個々の値は、変数(arrReturn)にインデックス番号を指定して取り出している

複数の値を返すFunctionプロシージャまとめ

複数の値を戻り値として返すFunctionプロシージャのサンプルプログラムを作成しました。

複数の値を返したい場合は、配列で返し、配列で受け取るというのがポイントです。
スポンサードリンク

  

関連記事