関数プロシージャで戻り値を複数設定するには?


ギャプラン  2004-01-09 18:58:44  No: 111189  IP: [192.*.*.*]

タイトルの通りです。

ユーザ関数(関数プロシージャ)で戻り値を複数設定するにはどうすればいいのでしょうか?

編集 削除
名無しさん  2004-01-09 19:30:33  No: 111190  IP: [192.*.*.*]

何言ってんですか。
戻り値は1つだからこそ意味があるんですよ。

編集 削除
たかみちえ  URL  2004-01-09 19:42:02  No: 111191  IP: [192.*.*.*]

…まあ、そんなとこです。戻り値はふつう一つしか返せません。これはルールです。

  と言っても、どうにかする方法はありますよ。
  参照渡しで引数を渡せば(ByRef だったかな)、それらに対する変更は、関数をでてものこります。
他にも、C言語風にやるなら、VB6で出てきた、VarPtr関数を使っても何とかできるかも(ま、ふつうしないでしょうが^^;)。

  何事も応用次第で、何とかなるものですよ。

編集 削除
Say  2004-01-10 00:38:18  No: 111192  IP: [192.*.*.*]

たとえばこう?

Option Explicit
Private Type ResultType
    a As Long
    b As String
    c As Date
End Type
Private Sub Command1_Click()
    MsgBox func1.a & func1.b & func1.c
    MsgBox func2(0) & func2(1) & func2(2)
End Sub
Private Function func1() As ResultType
    func1.a = 123
    func1.b = "あいうえお"
    func1.c = #1/10/2004#
End Function
Private Function func2() As Variant
    func2 = Array(123, "あいうえお", #1/10/2004#)
End Function

編集 削除