複数の変数を複数の戻り値で返すには?

解決


代行  2006-12-08 21:20:29  No: 134494

VB6.0で同じ処理を関数処理で済ませたいのですが、複数の変数を複数の戻り値で返すことは可能でしょうか?

Dim a As String    a = A
Dim b As String    b = B
Dim c As String    c = C
Dim d As String    d = D
と変数の宣言をしてから、いくつかの処理を行った後、a,b,c,d全ての変数をString型のAと返す処理といった感じです。

Function changeA(a As String,b As String,c As String,a As String) As String
a = A
b = A
c = A
d = A
End Function
と入力しても、うまくいかなかったので、やはり複数の戻り値を行うのは無理なのでしょうか?


代行  2006-12-08 21:31:58  No: 134495

スイマセン一部の訂正と質問の追加を行います。
Function changeA(a As String,b As String,c As String,a As String) As Stringの部分が
Function changeA(tempa As String,tempb As String,tempc As String,tempd As String) As Stringでした。

あと、もし複数の戻り値が不可能でしたら、a,b,c,dの全ての値をAに変更する処理を関数呼び出しすることは可能でしょうか?


KG  2006-12-08 22:05:48  No: 134496

参照渡しで出来ると思いますよ。明確にいうと戻り値ではなく
関数内で値を変更するということで実現できるかなと思います。


大吉末吉  2006-12-08 22:49:11  No: 134497

VB6ですよね?

---------------------------------------------------------------
Private Sub Command1_Click()

Dim a As String: a = "a"
Dim b As String: b = "b"
Dim c As String: c = "c"
Dim d As String: d = "d"

Debug.Print "前:", a, b, c, d
Call changeA(a, b, c, d)
Debug.Print "後:", a, b, c, d
End Sub

Function changeA(a As String, b As String, c As String, d As String) As String
a = "A"
b = "A"
c = "A"
d = "A"
End Function

------------------------------------------------------------
とやってみましたが・・・ちゃんと変わりますけど・・・

#VB6の場合、ByRefがデフォルトですから。


代行  2006-12-08 23:51:56  No: 134498

無事解決できました。変数宣言や形式の間違いといった単純なミスでした。アドバイスをくれたKGさん、大吉末吉さんありがとうございました。


K・今川  2006-12-08 23:55:58  No: 134499

>Function changeA(a As String,b As String,c As String,a As String) As Stringの部分が
>Function changeA(tempa As String,tempb As String,tempc As String,tempd As String) As Stringでした。
受け取る変数がtemp〜になっているのならFunction内の変数もtemp〜にしないと。
a=A ==> tempa = A


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加