|    | 
     こんにちは。 
>以下のようなFunctionを書いたのですがこの中でRetu;Gyouの変数の値も 
>Subプロシージャーに引き渡したいのですが 可能なのでしょうか 
四則計算をするFunctionプロシジャーを考えます。 
 
Function名   四則計算 
 
機能      与えれた二つの整数で 足し算、引き算、掛け算、割り算の 
        答えを返します 
 
 
 一つは、Functionの戻り値を配列で返す方法 
 
 
Function 四則計算(ByVal x As Long, ByVal y As Long) As Variant 
  Dim ans(1 To 4) As Double 
  ans(1) = x + y 
  ans(2) = x - y 
  ans(3) = x * y 
  ans(4) = x / y 
  四則計算 = ans() 
  Erase ans() 
End Function 
 
 
'呼び出し元では、 
 
Sub test1() 
  Dim 答え As Variant 
  Dim a As Long 
  Dim b As Long 
  a = 10 
  b = 5 
  答え = 四則計算(a, b) 
  MsgBox "足し算 " & a & "+" & b & "=" & 答え(1) 
  MsgBox "引き算 " & a & " - " & b & " = " & 答え(2) 
  MsgBox "掛け算 " & a & "×" & b & "=" & 答え(3) 
  MsgBox "割り算 " & a & "÷" & b & "=" & 答え(4) 
End Sub 
 
 
もう一つは、一番頻度の高そうな結果をFucntion xxのxxで返し(ここでは足し算)、 
付録的に他の計算は、パラメータで返す方法。 
 
 
Function 和(ByVal x As Long, ByVal y As Long, 差 As Double, 積 As Double, 商 As Double) As Double 
  和 = x + y 
  差 = x - y 
  積 = x * y 
  商 = x / y 
End Function 
 
 
'呼び出し元では、 
Sub test2() 
  Dim 引き算 As Double 
  Dim 掛け算 As Double 
  Dim 割り算 As Double 
  Dim a As Long 
  Dim b As Long 
  a = 10 
  b = 5 
  MsgBox "足し算 " & a & "+" & b & "=" & 和(10, 5, 引き算, 掛け算, 割り算) 
  MsgBox "引き算 " & a & " - " & b & " = " & 引き算 
  MsgBox "掛け算 " & a & "×" & b & "=" & 掛け算 
  MsgBox "割り算 " & a & "÷" & b & "=" & 割り算 
End Sub 
 
どっちが良いかは、Functionの内容にもよります。 
検討してみてください。 
 
 | 
     
    
   |