我目前有一个程序,可以使用以下代码确定下一个空行:
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
但是,如果删除了底部的任何行,则即使该行为空,它也会返回范围中最后一行以下的行。有没有一种方法可以使用.End(xlUp)跳过Excel表数据范围中的空白?
更新 阅读建议后,我最终将代码更改为此:
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
这似乎可以解决问题。我不确定这是否是最有效的方法,但肯定可以完成工作。感谢您的建议!