解決function只能傳回一個值的問題
--------------------------------------------------------------------------------
●用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