[英]Excel VBA: Get Last Cell Containing Data within Selected Range
如何使用Excel VBA获取包含特定范围内数据的最后一个单元格,例如列A和B Range("A:B")
?
using Find
like below is useful as it 使用以下
Find
是有用的
Nothing
identifies a blank range Nothing
标识空白范围 SpecialCells
range) SpecialCells
系列) change "YourSheet"
to the name of the sheet you are searching 将
"YourSheet"
更改为您要搜索的工作表的名称
Sub Method2()
Dim ws As Worksheet
Dim rng1 As Range
Set ws = Sheets("YourSheet")
Set rng1 = ws.Columns("A:B").Find("*", ws.[a1], xlValues, , xlByRows, xlPrevious)
If Not rng1 Is Nothing Then
MsgBox "last cell is " & rng1.Address(0, 0)
Else
MsgBox ws.Name & " columns A:B are empty", vbCritical
End If
End Sub
You can try several ways: 你可以尝试几种方法:
Dim WS As Worksheet
Dim LastCellA As Range, LastCellB As Range
Dim LastCellRowNumber As Long
Set WS = Worksheets("Sheet1")
With WS
Set LastCellA = .Cells(.Rows.Count, "A").End(xlUp)
Set LastCellB = .Cells(.Rows.Count, "B").End(xlUp)
LastCellRowNumber = Application.WorksheetFunction.Max(LastCellA.Row, LastCellB.Row)
End With
Dim WS As Worksheet
Dim LastCell As Range
Set LastCell = Range("A:B").SpecialCells(xlCellTypeLastCell)
The latter can sometimes be tricky and might not work as you wanted it to. 后者有时可能很棘手,可能无法按照您的意愿工作。
You can also have a look at Chip Pearson's page about this issue 您还可以查看Chip Pearson关于此问题的页面
For a variable selection you can use 对于变量选择,您可以使用
Sub test()
Dim arrArray As Variant
Dim iAct As Integer
Dim iHighest As Integer
arrArray = Split(Selection.Address(1, 1, xlR1C1), ":")
For Count = Right(arrArray(0), 1) To Right(arrArray(1), 1)
iAct = ActiveSheet.Cells(Rows.Count, Count).End(xlUp).Row
If iAct > iHighest Then iHighest = iAct
Next Count
MsgBox iHighest
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.