• ベストアンサー

関数で複数の値を戻り値として返す方法

こんにちは初歩的な質問ですいませんが、VB6.0にて関数を 呼び出して、求めた値を戻り値として返す方法は知ってい ますが、2つ又は3つの値を返したい場合、どうやればよい のでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 ByRefで指定した(通常は省略している)引数に返せばいいと思います。 こんな感じで。 a = 100 b = 10 ret = Keisan(a As Double, b As Double, Tashi As Double, Hiki As Double) MsgBox Tashi MsgBox Hiki ***** プロシージャ部 ***** Public Function Keisan(a As Double, b As Double, resP As Double, resM As Double) As Long   resP = a + b   resM = a - b End Function あとは、戻り値を配列やユーザー定義型にするとか。 それか、グローバル変数を用意しておいて、それを介するとかでしょうか。

ichihachi
質問者

お礼

わざわざソースを記述していただきましてありがとうございます。 大変参考になります。 >それか、グローバル変数を用意しておいて、それを介するとかでしょうか。 先日までそうしていたんですが、グローバル変数のオン パレードになってしまい、変数の数が膨大になりすぎて、 困っていたんですよ。。。 ありがとうございました。

その他の回答 (6)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.7

No.5(及び6)さんへ。 いやいや、こういうのは明示的にあえて記述する方がいいかも知れませんね。

  • Euglena
  • ベストアンサー率62% (5/8)
回答No.6

あ~、ごめんなさい。 参照渡しが既定なんですね。 失礼しましたm(_ _)m

  • Euglena
  • ベストアンサー率62% (5/8)
回答No.5

Public Function Keisan(a As Double, b As Double, resP As Double, resM As Double) As Long  ↓ Public Function Keisan(a As Double, b As Double, ByRef resP As Double, ByRef resM As Double) As Long では?

ichihachi
質問者

お礼

どうもありがとうございます。 指摘した個所が正であれ誤りであれ、質問した私には レスされた方の内容を鵜呑みにしてしまうので、他の方の こういうご好意は大変うれしいです。 ありがとうございました。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.4

No.1のmaruru01です。 ちょっと間違えているので訂正します。 ret = Keisan(a As Double, b As Double, Tashi As Double, Hiki As Double) ↓ ret = Keisan(a, b, Tashi, Hiki) です。

  • r_homma
  • ベストアンサー率50% (2/4)
回答No.3

お疲れ様です。 先々週からVBをはじめた初心者です。(VBではなくプログラムも初心者) 僕も最近知ったのですが、 hogehoge(引数1,引数2,返したい値1,返したい値2)と言った感じで 実際の処理に使う引数のほかに変数を指定してあげると 戻り値のほかに返したい値1,返したい値2にも値を格納→参照できます。 参照渡しとかそういったものらしいです。 詳しくは「参照渡し」で調べてみてくださいね。 詳しい方のフォローお願いします~。

ichihachi
質問者

お礼

どうもありがとうございます。 他の方に教えていただきましたし、検索してみたら 結構出てきました。 おかげでよくわかりました。 ありがとうございました。

回答No.2

関数はVBの中でのお話しでしょうか? VBから呼び出す関数とは? VBの中だけの世界であれば,グローバル変数を設定して,そこに値を入れて参照する。 という方法ではダメなのでしょうか?

ichihachi
質問者

お礼

どうもありがとうございます。 グローバル変数に関しては、数が多くなりすぎたために 質問した次第です。 わざわざすいませんでした。