能.结束(xlUp)跳过Excel表格数据范围底部的空白行/单元格?



我目前有一个程序,可以使用以下代码确定下一个空行:

Public Function GetEmptyRow() As Long
If ActiveSheet.Range("E" & Rows.Count).End(xlUp).Row > _
ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row Then
GetEmptyRow = ActiveSheet.Range("E" & Rows.Count).End(xlUp).Row + 1
Else
GetEmptyRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row + 1
End If
End Function

大于比较是因为如果活动行中的项目由多个人使用,它将创建一个新行并将第二个名称嵌套在 E 列中,其中 A 到 D 列为空。

我试图使用 Excel 表格添加条带格式,现在当添加新行时,数据区域中 A 到 D 中的空白单元格会"停止"End(xlUp( 值,允许我更改为仅一行代码:

Public Function GetEmptyRow() As Long
GetEmptyRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row + 1
End Function

但是,如果删除底部的任何行,它将返回范围中最后一个行下的行,即使它是空白的。有没有办法使用 .结束(xlUp(?

更新阅读建议后,我最终将代码更改为:

Public Function GetEmptyRow() As Long
Dim lastRow1 As Integer, lastRow2 As Integer
lastRow1 = ActiveSheet.ListObjects("Table3").Range.Columns(2) _
.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
lastRow2 = ActiveSheet.ListObjects("Table3").Range.Columns(5) _
.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
If lastRow2 > lastRow1 Then
GetEmptyRow = lastRow2 + 1
Else
GetEmptyRow = lastRow1 + 1
End If
End Function

这似乎可以解决问题。我不确定这是否是最有效的方法,但它肯定会完成工作。感谢您的建议!

不能使用.End属性跳过空白,它模拟单击单元格并在键盘上按ctrl+up 或End+up时将发生的操作。

  • 如果从非空白单元格开始,它将自动在范围为空白的地方停止,或者
  • 如果从空白单元格开始,它将自动停止在范围为空白的地方。

这是有关该属性的 MSDN 文档,这是有关该主题的另一个非常好的答案。

相关内容

  • 没有找到相关文章

最新更新