Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 范围内的最后一行_Excel_Excel 2010_Vba - Fatal编程技术网

Excel 范围内的最后一行

Excel 范围内的最后一行,excel,excel-2010,vba,Excel,Excel 2010,Vba,找到信息和/或解决方案以产生期望的结果,这就是问题所在 现在,可能在生产时,我会在工作表上有一个名为range的“模板”。第一次使用时,此名称范围仅为rngNamed1,但第一次使用后,可能会有更多类似于此名称范围的命名范围,例如最多rngNamed30 假设在构建到rngNamed30之后的第二次运行中,我需要再添加3个NamedRange,这将导致rngNamed33 我需要做的基本上是找到最后一个命名范围的最后一行和最后一列,这样我就知道从哪里开始复制数据并声明下一个命名范围 到目前为止,

找到信息和/或解决方案以产生期望的结果,这就是问题所在

现在,可能在生产时,我会在工作表上有一个名为range的“模板”。第一次使用时,此名称范围仅为
rngNamed1
,但第一次使用后,可能会有更多类似于此名称范围的命名范围,例如最多
rngNamed30

假设在构建到
rngNamed30
之后的第二次运行中,我需要再添加3个NamedRange,这将导致
rngNamed33

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

到目前为止,我所尝试的:
大多数解决方案的问题在于,它们是基于找到最后一个包含数据的单元格。我只需要知道区域的最后一个单元格,不管它是否包含数据。

您可以使用行和行轻松完成此操作。区域计数:

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

Range(“X”).Row
返回名为X的范围的第一行。
Range(“X”).Rows.Count
返回范围X中的行数。将这些行放在一起,可以计算范围的最后一行。范围(“X”)。地址返回可解码的地址字符串。这两种技术中的任何一种都会有帮助吗?是的,我有点想…是在尝试确保SpecialCells中没有一些模糊的选项或其他内部方法来提供信息。在对行进行尺寸标注时使用long,而不是整数,这是一种很好的做法。excel 2007及以后版本中的行数超过整数限制。另一种方法:
Debug.Print rng(rng.Rows.Count,1)(2)。Row
是的,我在VB6中学到了这一课……尽管我知道它将是Int的最大值的1/100左右,但最好是数据类型一致,不要希望类型转换(隐式)正确;)
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