我目前在sheet1上设置了一个表(“Table2”)。在A列中,我将行编号一直列在表格下面51,并且列B为空以填充。我试图让B列中使用的最后一行不为空。
我已尝试使用Worksheets("Sheet1").Range("B52").End(xlUp).Row
,但即使在B栏中填写的最后一项是第3行,我仍会给出51的答案。
我已尝试过最后一行功能,但在表格中使用时似乎无法正常工作。
答案 0 :(得分:3)
使用表格查找它更可靠:
With Worksheets("Sheet1")
Debug.Print .Range("B:B").Find(What:="*", _
After:=.Range("b1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
End With
这是链接中没有涉及的一个,使用工作表函数MATCH:
如果列是文本:
With Worksheets("Sheet1")
Debug.Print Application.WorksheetFunction.Match("ZZZ", .Range("B:B"))
End With
如果列是数字:
With Worksheets("Sheet1")
Debug.Print Application.WorksheetFunction.Match(1E+99, .Range("B:B"))
End With
答案 1 :(得分:1)
以下是关于此的good explanation:
With Worksheets("Sheet1")
Debug.Print .Range("B" & .Rows.Count).End(xlUp).Row
End With 'Worksheets("Sheet1")
由于这似乎位于 Excel表格对象中,请尝试以下操作:
With Worksheets("Sheet1").Range("Table2")
Debug.Print .Range("B" & .Rows.Count).End(xlUp).Row
End With 'Worksheets("Sheet1").Range("Table2")
答案 2 :(得分:0)
您可以构建一个简单的循环。
Dim lastrow As Long
lastrow = 0
Dim checkrow As Long
For checkrow = 1 To 51
If Worksheets("Sheet1").Range("B" & checkrow).Value <> "" Then
lastrow = checkrow
Else
'do nothing
End If
Next checkrow
这将从上到下遍历所有行,每次找到非空值时,都会保存该数字。因此,当循环结束时,lastrow是保存的最后一行,例如最后一行包含任何值(如果没有行包含值,则它保持为0)。
另外,您可能想要检查您的手机B51是否真的不包含任何内容。它可能包含一些空格,看起来是空的,而不会被检测到。