很多人接触到Excel的VBA时,都不理解End(xlUp).Row有何含义,有何用途。
下面,本人就给你介绍一下End(xlUp).Row到底有什么含义如何来使用。
其实End(xlUp).Row是VBA里面的End 属性。
一、End(xlUp).Row介绍
功能是返回一个 Range 对象,该对象代表包含源区域的区域尾端的单元格。等同于按键 End+ 向上键、End+ 向下键、End+ 向左键或 End+ 向右键。Range 对象,只读。
其语法如下:
expression.End(Direction)
expression 必需。 该表达式返回“应用于”列表中的对象之一。
Direction XlDirection 类型,必需。所要移动的方向。
XlDirection 可为 XlDirection 常量之一。
xlDown
xlToRight
xlToLeft
xlUp
二、End(xlUp).Row示例
本示例选定包含单元格 B4 的区域中 B 列顶端的单元格。
Range("B4").End(xlUp).Select
本示例选定包含单元格 B4 的区域中第 4 行尾端的单元格。
Range("B4").End(xlToRight).Select
本示例将选定区域从单元格 B4 延伸至第四行最后一个包含数据的单元格。
Worksheets("Sheet1").Activate
Range("B4", Range("B4").End(xlToRight)).Select
再比如:
Range("a65536").End(xlUp).Row A列数据区域最后一行的行号
Range("b65536").End(xlUp).Row B列数据区域最后一行的行号
Range("d65536").End(xlUp).Row D列数据区域最后一行的行号
Range("k65536").End(xlUp).Row K列数据区域最后一行的行号
最后,再看看一段VBA调用的代码吧:
Dim i, M, iRow, sh, arr
M = 0.0015
For Each sh In ThisWorkbook.Sheets
iRow = sh.[D65535].End(xlUp).Row
ReDim arr(1 To iRow, 1 To 2)
arr = sh.Range("D3:E" & iRow)
For i = 2 To UBound(arr)
arr(i, 1) = arr(i, 1) * M
arr(i, 2) = arr(i, 2) * M
Next
arr(1, 1) = Application.Substitute(arr(1, 1), "平方米", "亩")
arr(1, 2) = Application.Substitute(arr(1, 2), "平方米", "亩")
sh.Range("D3:E" & iRow) = arr
Next