这里有一个需要注意的“问题”:Microsoft 在 Excel 2007 中引入了“大网格”。这是可用行数和列数的巨大飞跃,您的用户可能已经开始利用它们。
也许您在 2005 年有一个有远见的团队为您的企业编写 VBA,但在我的旧工作中,以下是识别最后一行的现状:
LastRow = Range("A65536").End(xlUp).Row
如果 2007、2010 或 2013 工作表的填充行超过 65,536 行,以上将不会返回预期结果,并且您的旧脚本将失败,或者更糟糕的是,将返回不正确的结果。
您应该像上面那样嗅出任何最后一行(或最后一列)标识,并使用@SiddharthRout 在查找最后一行的权威帖子中描述的技术对其进行重构:Error in finding last used cell in VBA... 简而言之:
查找列中的最后一行(下面查找 Sheet1 上 A 列中最后占用的行)
With Sheets("Sheet1")
LastRow = .Range("A" & .Rows.Count).End(xlUp).Row
End With
查找工作表中的最后一行(下面使用CountA 防止出现空工作表1)
With Sheets("Sheet1")
If Application.WorksheetFunction.CountA(.Cells) <> 0 Then
lastrow = .Cells.Find(What:="*", _
After:=.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
Else
lastrow = 1
End If
End With