Excel vba将一个范围误认为另一个范围

Excel vba将一个范围误认为另一个范围,vba,excel,Vba,Excel,我有一个子程序,它打开工作簿,将其特定的范围放入一个变量中,然后将该变量作为参数传递给一个函数,该函数应该MsgBox该范围的每个值并对其进行更改 Function testFunc(aCol As Range) Dim i As Integer i = 0 For Each cell In aCol MsgBox (cell.Value) cell.Value = i i = i + 1 Next testFunc = i End Function

我有一个子程序,它打开工作簿,将其特定的范围放入一个变量中,然后将该变量作为参数传递给一个函数,该函数应该MsgBox该范围的每个值并对其进行更改

Function testFunc(aCol As Range)
  Dim i As Integer
  i = 0
  For Each cell In aCol
    MsgBox (cell.Value)
    cell.Value = i
    i = i + 1
  Next

  testFunc = i
End Function


Sub testSub()   
    Dim dataWorkbook As Workbook
    Set dataWorkbook = Application.Workbooks.Open("Y:\vba\test_reserves\test_data\0503317-3_FO_001-2582480.XLS")

   Set imcomesNamesRange = dataWorkbook.Worksheets("sheet 1").Range("A1:A20")
   Cells(1, 5) = testFunc(aRange)
End Sub

但这并没有发生——它只是MsgBoxes当前工作簿的工作表范围(包含宏的工作簿)的值,而不是读取和编辑新打开的工作簿。这里怎么了?

testFunc(aRange)
?或者
testFunc(imcomesNamesRange)
?我建议您使用
选项Explicit
,它将为您节省大量调试时间。另外,请使用“复制/粘贴”方式发布您正在测试的代码。@A.S.H,ops,没有注意到,谢谢。可能被删除该函数仅在您希望返回值时才应使用,您应该将函数testFunc更改为Sub testFunc@jmdon我正在将值返回单元格(1,5)单元格(1,5)要打开的工作簿是什么?我假设它应该是原始工作簿,而不是数据工作簿,对吗?如果是这样,请确保在打开另一个工作簿之前添加say
Dim origWB as Workbook
/
Set origWB=activeworkok
,然后执行
origWB.Sheets(“Sheet1”).Cells(1,5)=…
。在不使用
范围()
/
单元格()
限定工作簿和工作表的情况下,VBA会使用activesheet中的任何内容。