我正在尝试使用以下代码查找表中某一列的第一个空白单元格:
'Find next blank cell in results sheet
lLastRow = .Range("A" & .Rows.Count).End(xlUp).Row + 1
'Paste results in the result sheet
.Range("A" & lLastRow).Value = Worksheets(strSheet).Range(strAddress).Value
问题是它只能找到表格后的第一个空白单元格。有没有什么办法让它在表格内工作?
答案1
尝试一下:
Public Function IdentifyLastRowInBlock() As Long
With Sheet1
Dim lastRow As Long
lastRow = .Range("A" & .Rows.Count).End(xlUp).Row
Dim blankRow As Long
blankRow = .Range(.Cells(3, 1), .Cells(lastRow, 1)).End(xlDown).Row + 1
End With
IdentifyLastRowInBlock = blankRow
End Function
请注意,这将返回从第 3 行开始的最后一个未使用的行。由于不知道您的代码,我只是硬编码了起始点 - 您必须对其进行修改以适应您的情况。我实际上建议将其作为函数的参数,以便将来更加灵活。它也是硬编码的,用于查找第 1 列(“A”),也可以将其作为参数。
另请注意,如果表的第 1 列恰好已“满”,它将找到第一行后表格。表格的妙处在于它们可以自动扩展,因此如果您在现有表格后的第一行中输入一个值,Excel 将为您扩展表格。
答案2
该.End
功能还有其他选项,xlUp
因此您可以从顶部开始然后向下进行。
lLastRow = .Range("A1").End(xlDown).Row + 1
答案3
最终得到了这个巫婆的作品
出错时继续下一步 lLastRow = Range("A29:A67").Find(What:="", _ After:=Range("A29"), _ LookAt:=xlWhole, _ LookIn:=xlFormulas, _ SearchOrder:=xlByRows, _ SearchDirection:=xlNext, _ MatchCase:=False).Row On Error GoTo 0
'Paste results in the result sheet
.Range("A" & lLastRow).Value = Worksheets(strSheet).Range(strAddress).Value