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
と入力しても、うまくいかなかったので、やはり複数の戻り値を行うのは無理なのでしょうか?
スイマセン一部の訂正と質問の追加を行います。
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に変更する処理を関数呼び出しすることは可能でしょうか?
参照渡しで出来ると思いますよ。明確にいうと戻り値ではなく
関数内で値を変更するということで実現できるかなと思います。
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がデフォルトですから。
無事解決できました。変数宣言や形式の間違いといった単純なミスでした。アドバイスをくれたKGさん、大吉末吉さんありがとうございました。
>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
ツイート | ![]() |