我从电子表格模块调用一个函数,该函数在另一个工作表中执行某些处理并返回一个整数。然后我想在表单中的单元格中写入该整数,从中调用该函数。我收到错误400,我想我没有正确处理工作表之间的切换。
你可以帮帮我吗?
Function lastNonZero(Rng As Range) As Integer
i = 19
Do While ActiveCell.Value = 0
ActiveCell.Offset(0, -1).Activate
i = i - 1
Loop
lastNonZero = i
End Function
从位于工作表A模块中的Sub中提取:
For j = startRow To startRow + (nRows - 1)
Worksheets("B").Select
Range("Y" & j).Activate
k = lastNonZero(Worksheets("B").Range("Y" & j))
Worksheets("A").Range("BZ" & j) = k
Next j
答案 0 :(得分:1)
尝试将Range("Y" & j)
行替换为:
Worksheets("B").Range("Y" & j).Activate
当您在工作表的模块中调用Range(xxx)
时,它会引用该工作表中的范围,无论是否已选中。但是,如果未选择工作表并且您尝试选择/激活范围,则会返回错误,因为您无法在不是活动工作表的工作表上选择范围。
ps:这不会改变下一行(k = lastNonZero(Worksheets("B").Range("Y" & j))
)上的事实,lastNonZero
函数中没有使用该参数。