【发布时间】:2019-09-08 02:45:19
【问题描述】:
我很难在 Excel VBA 中从 SpecialCells(xlCellTypeLastCell) 获得准确的值。以下代码应输出“TrackedItems”工作表中第一个空行的行号。工作表有8行,但代码输出25(应该输出9):
emptyRow = 1 + wb.Worksheets("TrackedItems").Cells.SpecialCells(xlCellTypeLastCell).Row
MsgBox emptyRow
在这种特殊情况下,this answer 将解决我的问题,因为电子表格不是稀疏填充的(没有空白单元格与非空白单元格混合)。但是,我多次使用xlCellTypeLastCell,并没有遇到这个问题,包括在数据 稀疏填充的情况下。是什么导致xlCellTypeLastCell 以这种方式行事?有什么方法可以让它正常运行,还是我必须依赖自定义编码的函数?我应该用这些函数替换我使用 xlCellTypeLastCell 的旧工作,还是它当前工作的事实意味着它以后不会中断(至少如果我不更改这些工作簿中的任何代码)?
【问题讨论】:
-
您能否提供一些示例数据,因为听起来问题可能与您工作表中的数据结构有关。
-
如果您在特定列中搜索第一个空行,它并不需要那么困难。或者正如@Ripster 上面所说的那样——了解数据结构可以帮助提供一些简单和替代的解决方案......
-
顺便说一句,根据 MSDN:"xlCellTypeLastCell。已使用范围中的最后一个单元格" 表示“整个工作表的已使用范围,未引用范围”。此外,似乎是空的单元格不是。保留了一些单元格的信息,这就是您的问题。
-
我会提供数据,但问题现在已经神奇地自行解决了。如果它再次启动,我一定会编辑我的问题。