3

在查找产生所需结果的信息和/或解决方案时遇到问题,就这样吧。

现在,并且可能在生产时,我将在工作表上有一个命名范围的“模板”。在第一次使用时,这个 NamedRange 只是rngNamed1,但在第一次使用之后,可能会有更多与这个相似的命名范围,比如rngNamed30.

假设在构建到 2 次运行后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

大多数解决方案的问题在于它们是基于找到最后一个带有数据的单元格。我只需要知道范围的最后一个单元格,不管它是否包含数据。

4

1 回答 1

7

您可以使用范围的 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
于 2012-09-25T18:45:48.883 回答