我一直盯着这段代码,我觉得我错过了很简单的东西。此语句的目标是将“lastRowCompass”变量(范围)设置为列中的第一个空单元格:
Set lastRowCompass = Cells(Rows.Count, 2).End(xlUp).Offset(1, 0)
设置变量后,我想在循环中使用它:
For i = lastRowCompass To Range("D" & Rows.Count).End(xlUp).Row
If ActiveSheet.Cells(i, 4) <> "" Then
Cells(i, 4).Offset(0, -2) = hireDate
End If
Next
该变量被声明为Range,因此这非常令人困惑。当我单步执行代码时,即使在执行set语句后i = 0。有没有人有什么建议?我看过的所有例子都没有帮助我解决这个问题。非常感谢!
编辑:我也试过这一行:Set lastRowCompass =Range("B1").End(xlDown).Offset(1, 0)
和这一行:
Set lastRowCompass = Range("B" & Rows.Count).End(xlDown).Offset(1, 0)
但我对两者都有相同的结果。
答案 0 :(得分:3)
在For i =
中你必须有一个整数,但是你传递的是Range。
(Offset返回一个Range对象,所以lastRowCompass不是整数,它是一个Range)
我认为程序无法完全按照您喜欢的方式将Range转换为整数。
尝试使用For i = lastRowCompass.Row
或其他起始值。
如果我建议,请始终在代码文件的顶部使用Option Explicit
。
这将要求你声明所有变量(少量额外编码),但可以帮助避免一些奇怪的任务。