VB 一個函式傳回多個值
'●用Function當成子程式的一個好處,就是Function本身可以傳回一個值到上一層呼叫的子程式裡,但問題來了,若為了工作上的需要,想一次傳回一個以上的值,那該怎麼辦?
Private Sub Command1_Click()
MyReturn 5, 6
End Sub
Private Function MyReturn(X, Y) As Long
A = X + Y
B = X - Y
C = X * Y
D = X / Y
'想傳回A、B、C、D四個數值回去,怎麼寫?
End Function
'●這是一個基本的觀念問題,子程式與子程式間的傳值有ByVal與ByRef兩種,ByVal是兩個子程式間的傳值放在不同的記憶體位置,而預設的ByRef則是將傳值放在同一個記憶體位置上,故這一點可以拿來利用,可將上式改寫成:
Private Sub Command1_Click()
MyReturn 5, 6, Ans1, Ans2, Ans3, Ans4
MsgBox "答案分別是" & Ans1 & "," & Ans2 & "," & Ans3 & "," & Ans4
End Sub
Private Function MyReturn(X, Y, A, B, C, D) As Long
A = X + Y
B = X - Y
C = X * Y
D = X / Y
End Function
'●或是把資料作成Variant型態陣列傳回:
Private Sub Command1_Click()
Ans = MyReturn(5, 6)
MsgBox "答案分別是" & Ans(0) & "," & Ans(1) & "," & Ans(2) & "," & Ans(3)
End Sub
Private Function MyReturn(X, Y) As Variant
MyReturn = Array(X + Y, X - Y, X * Y, X / Y)
End Function