【问题标题】:how to get last row that has velue Excel VBA within a range如何获取范围内具有Excel VBA值的最后一行
【发布时间】:2020-06-28 05:05:25
【问题描述】:

我是 VBA 宏的新手。我只想知道如何获取在一个范围内具有值的最后一行

 Set MyRange = Worksheets(strSheet).Range(strColumn & "1")
GetLastRow = Cells(Rows.Count, MyRange.Column).End(xlUp).Row

此代码可以找到整个工作表的最后一行.. 我只是希望它找到最后一个非空值单元格 ( 就像图片中的这种情况.. 对于 ("A8") 范围,最后一行结果应该是 ("A9:B9")

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    "A9:B9" 不能是最后一行...它是一个范围。

    如果你需要这样的范围,但基于最后一个空行,从特定单元格开始,你可以使用下一个方法:

    Sub testLastRowRange()
       Dim sh As Worksheet, myRange As Range, lastRow As Long, strColumn As String
       Dim lastCol As Long, endingRowRng As Range, strSheet As String
       
       strSheet = ActiveSheet.Name 'please, use here your real sheet name
       Set sh = Worksheets(strSheet)
       strColumn = "A"
       Set myRange = sh.Range(strColumn & 8)
       lastRow = myRange.End(xlDown).row
       lastCol = myRange.End(xlToRight).Column
       Set endingRowRng = sh.Range(sh.Cells(lastRow, myRange.Column), sh.Cells(lastRow, lastCol))
       Debug.Print endingRowRng.address
    End Sub
    

    【讨论】:

    • @Yusuf Rahmaniac:你有时间检查收到的答案代码吗?
    【解决方案2】:

    对于您的具体示例,您可以使用CurrentRegion 属性。

    这是基于ActiveCell,通常不建议这样做。

    Sub x()
    
    Dim r As Range
    
    Set r = ActiveCell.CurrentRegion
    
    MsgBox r.Address
    
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-05
      • 1970-01-01
      • 1970-01-01
      • 2023-01-23
      • 2015-10-19
      • 2023-03-12
      • 1970-01-01
      相关资源
      最近更新 更多