人生最悪の忘れ物

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で二つの計算結果をかえすには
どうしたらよいのでしょうか?
お願いします。

A 回答 (5件)

ローカル変数を使えば可能だと思いますよ



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 )
と言った具合です
    • good
    • 0
この回答へのお礼

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

バッチリでした。本当に助かりました。

お礼日時:2007/11/13 21:43

すみません Ano3です


関数宣言の As Integer は As Integer() でした

m(__)m
    • good
    • 3

以下、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
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/11/13 21:44

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

で・・・戻り値は、エラーを返すとか。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/11/13 21:45

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

    • good
    • 0
この回答へのお礼

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

お礼日時:2007/11/13 21:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A