隐藏最后一行时查找Excel电子表格的最后一行

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正在挑选最后一个未经过滤的行,这与之前的行为有明显不同.一旦我能够更好地隔离我遇到的错误/不一致,我会更新这篇文章.

Mat*_*rum 3

这些应该忽略过滤/可见性并为您提供最后使用的行号:

DataWorksheet.UsedRange.Rows.Count
Run Code Online (Sandbox Code Playgroud)

-或者-

DataWorksheet.Range("A1").SpecialCells(xlCellTypeLastCell).Row
Run Code Online (Sandbox Code Playgroud)

两者都找不到 A 列中最后使用的单元格,但是......这就是您所需要的吗?