工作表中上次使用的单元格

Tuc*_*man 3 excel vba

我是新来的,我希望使用 Excel VBA 返回工作表中最后使用的单元格。

我查看了Error in find last used cell in Excel with VBA),但这并没有解决我遇到的两个问题:

  1. .Cells.Find(...).Row方法在我的代码中花费的时间太长。

  2. 我的“最后使用的单元格”的意思可能很奇怪……单元格可以是空白的。我想取具有最后使用的单元格的列并将其与具有最后使用的单元格的行配对。

解释一下:假设一张工作表是空的,除了A1:C3D2和 中的数据B4。(图表 1 )

我感兴趣的最后一个单元格是D4因为我想要包含工作表中所有数据的工作表中的最后一个单元格。

在此处输入图片说明

既然我已经解释了我要找的东西,任何人都可以提供建议

  • 如何使 cell.find 运行得更快或
  • 在工作表中找到“最后一个单元格”的另一种可靠方法?

谢谢!

A.S*_*S.H 6

你试过这个吗?

Dim r As Range
Set r = Sheet1.UsedRange.SpecialCells(xlCellTypeLastCell)
Debug.Print r.Address
Run Code Online (Sandbox Code Playgroud)

您的示例的输出:

4 美元

已知 UsedRange 并不总是与实际使用的数据范围匹配。一些解决方法是使用CurrentRegion

Dim r As Range
With Sheet1.Range("A1").CurrentRegion
    Set r = Sheet1.Cells(.Rows.count, .Columns.count)
End With
Debug.Print r.Address
Run Code Online (Sandbox Code Playgroud)

此外,如果数据不是从 开始A1,也许是这样:

With Sheet1.Cells.Find("*").CurrentRegion
Run Code Online (Sandbox Code Playgroud)


bre*_*tdj 5

使用Find列来识别该单元格。

  Sub GetLastCellRange()
        Dim rng1 As Range
        Dim rng2 As Range
        Dim rng3 As Range
        Set rng1 = Cells.Find("*", [a1], xlFormulas, , xlByRows, xlPrevious)
        Set rng2 = Cells.Find("*", [a1], xlFormulas, , xlByColumns, xlPrevious)
        If Not rng1 Is Nothing Then
            Set rng3 = Range([a1], Cells(rng1.Row, rng2.Column))
            MsgBox "Range is " & rng3.Address(0, 0)
            'if you need to actual select the range (which is rare in VBA)
            Application.Goto rng3 
        Else
            MsgBox "sheet is blank", vbCritical
        End If
    End Sub
Run Code Online (Sandbox Code Playgroud)