• ベストアンサー

Functionの戻り値を配列にしたいのですが

vbを始めたばかりですがよろしくお願いします。 Functionの戻り値を配列にしたいのですが Function fnc(ByVal a As Byte, ByVal b As Byte) As Integer() fnc(0) = a + b fnc(1) = a - b End Function というような使い方はできないのでしょうか? 一つのFunctionで二つの計算結果をかえすには どうしたらよいのでしょうか? お願いします。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

ローカル変数を使えば可能だと思いますよ VB6.0の場合 Function fnc( byVal a as Byte, Byval b as Byte) as Integer   dim ar(1) as Integer   ar(0) = a + b   ar(1) = a - b   fnc = ar End Function VB.NETなら Function fnc( byVal a as Byte, Byval b as Byte) as Integer   dim ar(1) as Integer   ar(0) = a + b   ar(1) = a - b   return ar End Function VB.NETでも fnc = ar と言った記述も出来ます 呼び出し側では 動的配列として返り値を受けます dim results() as Integer results = fnc( 5, 3 ) と言った具合です

oshiete44
質問者

お礼

遅くなってすみません。 ありがとうございました。 バッチリでした。本当に助かりました。

すると、全ての回答が全文表示されます。

その他の回答 (4)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.5

すみません Ano3です 関数宣言の As Integer は As Integer() でした m(__)m

すると、全ての回答が全文表示されます。
  • slate
  • ベストアンサー率41% (14/34)
回答No.4

以下、VBA(Excel2000)なので、VBで動くかは知りません。 試してみてください。 Function fnc(ByVal a As Byte, ByVal b As Byte) As Integer() Dim p_fnc(0 To 1) As Integer p_fnc(0) = a + b p_fnc(1) = a - b fnc = p_fnc End Function Sub test() Dim ary() As Integer Dim i As Integer ary = fnc(1, 1) For i = 0 To 1 MsgBox "配列 ary(" & CStr(i) & ")の中身は。。" & CStr(ary(i)) & "です。" Next End Sub

oshiete44
質問者

お礼

ありがとうございました。

すると、全ての回答が全文表示されます。
  • unamana19
  • ベストアンサー率62% (56/89)
回答No.2

Function fnc(ByVal a As Byte, ByVal b As Byte, ByRef out_a As Integer, ByRef out_b As Integer) As Integer out_a = a + b out_b = a - b End Function で・・・戻り値は、エラーを返すとか。

oshiete44
質問者

お礼

ありがとうございました。

すると、全ての回答が全文表示されます。
  • Kame_LABO
  • ベストアンサー率24% (30/122)
回答No.1

構造体で検索してみて下さい。

oshiete44
質問者

お礼

遅くなってすみません。 ありがとうございました。検索してみます。

すると、全ての回答が全文表示されます。

関連するQ&A