您可以使用函数将“种子”范围传递给并返回从传递的一个到同一列中最后一个非空单元格的范围,如下所示(cmets 中的解释)
Function GetRange(rng As Range) As Range
With rng.Parent ' reference passed range parent worksheet
Set GetRange = .Range(rng, .Cells(.Rows.Count, rng.Column).End(xlUp)) ' return referenced sheet range from passed range to passed range column last not empty cell
End With
End Function
按如下方式使用:
Sub Test()
GetRange(Worksheets("Data").Range("O2")).Copy
End Sub
您可以增强该功能并让它处理给定的“最终”行
Function GetRange(rng As Range, Optional finalRow As Variant) As Range
With rng.Parent ' reference passed range parent worksheet
If IsMissing(finalRow) Then ' if no "final" row passed
Set GetRange = .Range(rng, .Cells(.Rows.Count, rng.Column).End(xlUp)) ' return referenced sheet range from passed range to passed range column last not empty cell
Else 'else
Set GetRange = .Range(rng, .Cells(finalRow, rng.Column)) ' return referenced sheet range from passed range to passed range column cell in give "final" row
End If
End With
按如下方式使用:
Sub Test()
GetRange(Worksheets("Data").Range("O2"), 2).Copy
End Sub
将“final”行保留为可选,该函数可以在有或没有传递的情况下使用:
Sub Test()
GetRange(Worksheets("Data").Range("O2")).Copy ' this will copy worksheet "Data" range from row 2 down to its column "O" last not empty row
GetRange(Worksheets("Data").Range("O2"), 3).Copy ' this will copy worksheet "Data" range from row 2 down to row 3
End Sub