如何调用由不同函数创build的数组?

我试图使用另一个用户定义函数中的用户定义函数创build的数组。 对于这个练习,我有两个独立的function。

第一个函数将从范围input创build一个数组,并将这些值相加(是的,我知道有一个excel内置sum函数,但这只是练习)。

第二个函数将调用在第一个函数中创build的数组,并将这些值与第二个范围input相加。 看下面的代码。

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 

我的问题是:我如何使用在第一个函数中创build的main_array ,以便我可以使用它的第二个。

实际上,我有数百个需要计算的单元格,并且为每个单元格创build相同的数组效率不高。 我想创build一个数组(在这种情况下function#1),并使用一个更简单的函数(函数#2),将调用保存的数组,节省了我的代码和时间的许多行。

提前致谢。

将数组存储在一个全局variables中是一种方法。 但是这种方法的一个问题是,你已经引入了依赖关系到Excel无法看到的第二个func。 解决这个问题比将数组全局化更复杂。

所以你必须以某种方式确保在second-func之前在这个Excel会话中计算出first_func,并且在重新计算first-func时(例如,因为list_1已经更改)所有second-Func都会重新计算。

所以你必须做这样的事情:

  • 在您的Workbook_Open事件中,您需要重新计算first-func(以在重新打开工作簿时处理这种情况,并且全局数组为空且需要重新创build)
  • Second_func需要一个额外的参数来引用包含first-Func的单元格(以便Excel在每次更改list1和更新func-1时重新计算它)