Slo*_*rio 8 excel vba excel-2007 excel-vba
我正在尝试在列A中找到包含具有以下代码的值的最后一行:
LastRow = DataWorksheet.Range("A:A").Find(What:="*", SearchOrder:=xlRows, SearchDirection:=xlPrevious, LookIn:=xlValues).Row
Run Code Online (Sandbox Code Playgroud)
这适用于大多数情况,除非最后几行被过滤掉.例如,假设我们有30行数据.如果行1-10可见,11-20被过滤掉,21-30可见,它成功找到最后一行:它返回30.当一切都可见并且行21-30被过滤掉时,LastRow返回1.
请注意,如果我手动隐藏而不是过滤掉行21-30,它会告诉我最后一行是20.
是什么赋予了?如果最后一行被过滤,如何确定最后一行是什么?
编辑:现在好像LastRow正在挑选最后一个未经过滤的行,这与之前的行为有明显不同.一旦我能够更好地隔离我遇到的错误/不一致,我会更新这篇文章.
这些应该忽略过滤/可见性并为您提供最后使用的行号:
DataWorksheet.UsedRange.Rows.Count
Run Code Online (Sandbox Code Playgroud)
-或者-
DataWorksheet.Range("A1").SpecialCells(xlCellTypeLastCell).Row
Run Code Online (Sandbox Code Playgroud)
两者都找不到 A 列中最后使用的单元格,但是......这就是您所需要的吗?