Excel VBA: Get Last Cell Containing Data within Selected Range

∥☆過路亽.° 提交于 2020-01-11 03:30:51

问题


How do I use Excel VBA to get the last cell that contains data within a specific range, such as in columns A and B Range("A:B")?


回答1:


using Find like below is useful as it

  • can find the last (or first) cell in a 2D range immediately
  • testing for Nothing identifies a blank range
  • will work on a range that may not be contiguous (ie a SpecialCells range)

change "YourSheet" to the name of the sheet you are searching

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



回答2:


You can try several ways:

Using xlUp

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

Using SpecialCells

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.

More tips

You can also have a look at Chip Pearson's page about this issue




回答3:


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


来源:https://stackoverflow.com/questions/8785063/excel-vba-get-last-cell-containing-data-within-selected-range

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!