• ベストアンサー

VBで、関数を関数の引数にするは?

VBで関数の引数に、関数を呼ぶにはどのようにすればいいでしょうか?  例えば以下のようなイメージです   DEF FUNC1(X)=X^2   DEF FUNC2(F,a,b)=F(a)+F(b)     関数FUNC2では、関数Fを引数にする     つまりFUNC2(FUNC1,1,2)は     FUNC1(1)+FUNC1(2)=1^2+2^2=5 こんな感じです。 お教えください。

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.4

こんな感じですかね? フォームにコマンドボタンを1つ貼り付けてあります。 で、ボタンを押すと関数の結果をメッセージボックスに表示するようになっています。 CallByNameの詳しい使い方はヘルプを見てください。 Private Sub Command1_Click() MsgBox Func2("Func1", 1, 2) End Sub Public Function Func1(X As Long) As Long Func1 = X ^ 2 End Function Public Function Func2(strFuncName As String, X As Long, Y As Long) As Long Func2 = CallByName(Me, strFuncName, VbMethod, X) _ + CallByName(Me, strFuncName, VbMethod, Y) End Function

showme2002
質問者

お礼

大変よく分かりました。ありがとうございました。

その他の回答 (3)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

VB6、VBA6で、フォームなどのクラスのメソッドやプロパティであるという条件に限り、CallByName()で実現可能かと思われます。

showme2002
質問者

補足

回答ありがとうございます。 できましたら具体的な記述の方法を お教えください。

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.2

ゴメンナサイ。 ×dblRet = Func2(Func1(1), Func2(2)) ○dblRet = Func2(Func1(1), Func1(2)) でした~

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.1

こんな感じです。 Function Func1(X As Double) As Double   Func1 = X ^2 End Function Function Func2(A As Double, B As Double) As Double   Func2 = A + B End Function ----------------------------------------- Sub Test()   Dim dblRet As Double '戻り値   dblRet = Func2(Func1(1), Func2(2))   MsgBox "答えは" & dblRet & "で~す!" End Sub

showme2002
質問者

補足

回答ありがとうございます。 しかし、この方式ではFUNC2に引数に 関数ではなくて、FUNC1(1)などの 値をしています。そうではなくて あくまでもFUNC2に関数を渡したい のですが。ここではFUNC1を例に していますが、ここに入るのは SINでもLOGでもいい様にしたいのです。 分かってもらえたでしょうか? もし、「引数に関数を持ってくる」 方法が分かりましたらお教えください。