我正在嘗試使用另一個用戶定義函數中的用戶定義函數創建的數組。對於這個練習,我有兩個獨立的功能。如何調用由不同函數創建的數組?
第一個函數將從範圍輸入創建一個數組,並對這些值進行求和(是的,我知道有一個excel內置求和函數,但這只是用於練習)。
第二個函數將調用在第一個函數中創建的數組,並將值與第二個範圍輸入相加。請參閱以下代碼。
Function first_funct(list_1 As range) As Double
Dim extent As Integer
extent = list_1.rows.Count
Dim main_array() As Double
ReDim main_array(1 To extent)
Dim i As Integer
first_funct = 0
For i = 1 To extent
main_array(i) = list_1(i).Value
'main_array will be used again in second function
first_funct = first_funct + main_array(i)
Next i
End Function
Function second_funct(list_2 As range) As Double
Dim extent As Integer
extent = list_2.rows.Count
'Assume the extent of list_2 is equal to extent of list_1 in first function.
Dim i As Integer
second_funct = 0
For i = 1 To extent
second_funct = second_funct + main_array(i) + list_2(i).Value
'How do I call upon main_array created from list_1 in the first function?
Next i
End Function
我的問題是:我怎麼使用第一函數創建的main_array
,這樣我可以使用它的第二個。
實際上,我有數百個需要計算的單元格,並且爲每個單元格創建相同的數組效率不高。我想創建一個數組(在本例中爲函數#1)並使用一個更簡單的函數(函數#2)來調用保存的數組,從而爲我節省了許多代碼和時間。
在此先感謝。
全局變量是許多函數和子函數中使用的變量。你可能想讓你的數組成爲全局的。 –
添加到@ A.S.H,只需在兩個函數之上移動Dim'main_array()As Double'行即可。應該管用。 – nightcrawler23
您將數組作爲參數傳遞,或者如果只有一個和程序的主要點,則將其聲明爲全局。適度使用Globals,通過簡單化來加速程序。 – 2017-01-03 04:46:11