将parameter passing给嵌套的子过程时,Excel如何处理范围

我从另一个子程序调用这个子程序。 当我将这些代码重构为主程序之外,variables不再注册在我的监视窗口中,代码也不能正确执行。 但是,debugging时,我可以将光标hover在myArray(x,y)上,并显示将值加载到数组中。 我想我可能有一个范围问题,任何见解?

Public Sub calcPriceCycles(ws As Worksheet, thisRow As Integer) Dim k As Integer Dim myArray(0 To 10, 0 To 1) As Long 'ArraySum = 0 For k = 0 To 10 If thisRow >= 12 Then 'calculate up to row 12 due to array size myArray(k, 0) = ws.Cells(thisRow - k, 5) myArray(k, 1) = thisRow - k End If Next k End Sub 

正如你编写这个例程, myArray是不可见的外部。 该数组是本地的。 为了让myArray可见,你有三个select:

  1. 通过标题传回arrays
  2. 使用一个函数而不是一个子
  3. 通过移动子外部的Dim使myArray的范围更具全局性