0

我从电子表格模块调用一个函数,该函数在另一张表中进行一些处理并返回一个整数。然后,我想将该整数写入工作表中调用该函数的单元格中。我收到错误 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

从位于 Sheet 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
4

1 回答 1

1

尝试将Range("Y" & j)行替换为:

Worksheets("B").Range("Y" & j).Activate

当您调用Range(xxx)工作表的模块时,它指的是该工作表中的一个范围,无论它是否被选中。但是,如果未选择工作表并且您尝试选择/激活范围,它将返回错误,因为您无法在不是活动工作表的工作表上选择范围。

k = lastNonZero(Worksheets("B").Range("Y" & j))ps:这并没有改变在下一行( )上,函数中没有使用参数的事实lastNonZero)。

于 2012-06-19T10:11:55.467 回答