范围中的最后一行

Gol*_*hop 2 excel vba excel-vba excel-2010

在找到产生所需结果的信息和/或解决方案时遇到问题,所以在这里.

现在,可能在生产时,我将在工作表上有一个名为范围的"模板".在第一次使用时,这个NamedRange只是rngNamed1在第一次使用之后,可能会有更多类似于这个的命名范围,比如说rngNamed30.

让我们说,在第二次运行之后rngNamed30,我需要再添加3个NamedRange,结果是rngNamed33.

我需要做的是基本上找到最后一个命名范围的最后一行和列,所以我知道从哪里开始复制数据并声明下一个命名范围.

到目前为止我尝试了什么:

Dim rng As range
Set rng = range("rngNamed1")
'Set rng = rng.Find("*", rng.Cells(1, 1), xlFormulas, xlPart, xlByRows, xlPrevious, False)
Debug.Print rng.Find("*", rng.Cells(1, 1), , , , xlPrevious).Address
Run Code Online (Sandbox Code Playgroud)

大多数解决方案存在的问题是它们基于找到最后一个单元格数据.我只需知道范围的最后一个单元格,无论它是否包含数据.

Jus*_*ies 6

您可以使用范围的Row和Rows.Count轻松完成此操作:

Sub NextRowAfterRange()
    Dim ws As Worksheet
    Dim rangeNom As String
    Dim nextRow As Long

    ' Enter desired name here
    rangeNom = "rngName1"

    Set ws = ActiveSheet

    nextRow = ws.Range(rangeNom).Row + ws.Range(rangeNom).Rows.Count

    MsgBox nextRow
End Sub
Run Code Online (Sandbox Code Playgroud)

  • 在标注行而不是整数时使用long的好习惯.excel 2007以后的行数超过整数限制.另一种方式:`Debug.Print rng(rng.Rows.Count,1)(2).Row` (2认同)