我的函数 testFunc
以Range
为参数,循环遍历其单元格并对其进行编辑。我有 testSub
来测试两个案例:首先是我将当前工作簿的范围传递给 testFunc 通过: 1。变量Range
2.仅作为参数testFunct(...Range("A1:A16"))
。
第二种情况是指我打开另一个工作簿并执行相同操作 - 将其worksheets
范围之一传递给 {{1} 直接或通过变量。
testFunc
正如我在评论中指出的那样,问题在于,当我打开外国工作簿并通过变量传递其范围时,它会给出一个错误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 origWorkbook As Workbook
Set origWorkbook = ActiveWorkbook
Dim aRange As Range
Set aRange = ThisWorkbook.Sheets("sheet 1").Range("A1:A16")
Dim dataWorkbook As Workbook
Set dataWorkbook = Application.Workbooks.Open("Y:\vba\test_reserves\test_data\0503317-3_FO_001-2582480.XLS")
Dim incomesNamesRange As Range
Set incomesNamesRange = dataWorkbook.Worksheets("sheet 1").Range("A1:A20")
' origWorkbook.Worksheets("sheet 1").Cells(1, 5) = testFunc(dataWorkbook.Sheets("1").Range("A1:A20"))
origWorkbook.Worksheets("Ëèñò2").Cells(1, 50) = testFunc(incomesNamesRange)
' testFunc aRange
'origWorkbook.Worksheets("sheet 1").Cells(1, 5) = testFunc(aRange) '<---good
' origWorkbook.Worksheets("sheet 1").Cells(1, 5) = testFunc(ThisWorkbook.Sheets("sheet 1").Range("A1:A16"))
End Sub
对于每个单元格在aCol`中,而所有其他情况(包括通过范围)当前工作簿的变量)工作正常。
我需要 variable not defined
才能保持testFunc
,因为它是一个简单的例子,来自较大程序的某些代码需要从函数中获取返回值。我还需要将Function
存储在变量中,以最大限度地缩短执行时间。
编辑:正如评论中所指出的,我将Range
替换为Cells(1,5)
并修改了变量名称,但原始错误更改为origWorkbook.Worksheet("shee t1").Cells(1,5)
。我编辑了问题的标题和正文。
答案 0 :(得分:0)
工作表的默认名称中不应包含空格。
Set incomesNamesRange = dataWorkbook.Worksheets("sheet 1").Range("A1:A20")
将其更改为:
Set incomesNamesRange = dataWorkbook.Worksheets("Sheet1").Range("A1:A20")
看看是否能解决问题。