Excel xlCellTypeLastCell提供不正确值

Excel xlCellTypeLastCell提供不正确值,excel,vba,Excel,Vba,我很难从Excel VBA中的SpecialCells(xlCellTypeLastCell)中获得准确的值。以下代码应输出“TrackedItems”工作表中第一个空行的行号。工作表有8行,但代码输出25行(应输出9行): 在这个特殊的例子中,将解决我的问题,因为电子表格不是稀疏填充的(没有空白单元格与非空白单元格混合)。但是,我已经多次使用了xlCellTypeLastCell,没有遇到这个问题,包括在数据填充稀疏的情况下。是什么导致xlCellTypeLastCell以这种方式工作?有没有

我很难从Excel VBA中的
SpecialCells(xlCellTypeLastCell)
中获得准确的值。以下代码应输出“TrackedItems”工作表中第一个空行的行号。工作表有8行,但代码输出25行(应输出9行):

在这个特殊的例子中,将解决我的问题,因为电子表格不是稀疏填充的(没有空白单元格与非空白单元格混合)。但是,我已经多次使用了
xlCellTypeLastCell
,没有遇到这个问题,包括在数据填充稀疏的情况下。是什么导致
xlCellTypeLastCell
以这种方式工作?有没有办法让它正常工作,或者我必须依赖自定义编码函数?我是否应该用这些函数替换使用
xlCellTypeLastCell
的旧工作,或者它当前工作的事实是否意味着它以后不会中断(至少如果我不更改这些工作簿中的任何代码的话)?

您可以尝试以下方法:

emptyRow = range("A" & activesheet.rows.count).end(xlup).row

如果要返回最后一行,其中可能包含数据?

第24行可能有格式设置。我知道我迟到了,但我只是遇到了这个问题

xlCellTypeLastCell将为最后一个单元格提供格式设置,即使它是空的

你可能想要这个,改编自


您能否提供一些示例数据,因为听起来问题可能与工作表中的数据结构有关。如果您搜索某列中的第一个空行,则不需要太困难。或者如上@Ripster所述,了解数据结构有助于提供一些简单的替代解决方案……顺便说一句,根据MSDN:“xlCellTypeLastCell.The LastCell in The used range”(xlCellTypeLastCell.The LastCell in The used range),意思是“整个工作表的使用范围,而非引用范围”。此外,似乎是空的细胞恰好不是空的。一些细胞的信息被保留了下来,这就造成了你的问题。我会提供数据,除非问题已经神奇地解决了。如果它再次启动,我一定会编辑我的问题。
emptyRow = range("A" & activesheet.rows.count).end(xlup).row
Sub Lastcell(rowz&, colz&) ' -- get last cell in sheet
  Dim zRange As Range
  Set zRange = Cells.Find("*", [a1], xlFormulas, xlPart, xlByRows, xlPrevious, False)
  If zRange Is Nothing Then rowz = 1 Else rowz = zRange.row
  Set zRange = Cells.Find("*", [a1], xlFormulas, xlPart, xlByColumns, xlPrevious, False)
  If zRange Is Nothing Then colz = 1 Else colz = zRange.Column
End Sub