使用 VBA 向工作表写入数据时,经常需要在最后一个空行或列写入数据,要取得指定行或列中最后一个空单元格,一般使用 Range 对象的 End 属性,在取得单元格对象后便能够获得该单元格的相关属性,如行号、列标或数值等。
取得 A 列最后一个空单元格
Dim LastBlankRow As Integer
LastBlankRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(Rows.Count, 1).End(xlUp)
相当于我们选择 A 列最后一个单元格,再按 Ctrl+↑,得到最后一个非空单元格。
Cells(Rows.Count, 1).End(xlUp).Row
得到 A 列最后一个非空单元格的行号。最后一个非空单元格的行号加1就是最后一个空单元格的行号。
注意:如果 A 列全部为空单元格,LastBlankRow 变量得到的结果是 2,虽然 A1 也是空单元格。
取得第一行最后一个空单元格
Dim LastBlankColumn As Integer
LastBlankColumn = Cells(1, Columns.Count).End(xlToLeft).Column + 1
注意:如果第一行全部为空单元格,LastBlankColumn 变量得到的结果是 2,虽然 A1 也是空单元格。
取得 A 列最后一个非空单元格
Dim LastRow As Integer
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
注意:如果 A 列全部为空单元格,LastRow 变量得到的结果是 1,虽然 A1 也是空单元格。
取得第一行最后一个非空单元格
Dim LastColumn As Integer
LastColumn = Cells(1, Columns.Count).End(xlToLeft).Column
注意:如果第一行全部为空单元格,LastColumn 变量得到的结果是 1,虽然 A1 也是空单元格。
Range 对象的 End 属性
Range 对象的 End 属性返回 Range 对象,该对象代表包含源区域的单元格引用区域尾端的单元格,当指定的 Range 对象为多单元格区域时,默认为左上角单元格。
End 属性的语法格式如下:
End (Direction)
其中,参数 Direction 指定所要移动的方向,可为下表列举的 XIDirection 常量之一。
XlDirection 常量 | 值 | 说明 |
---|---|---|
xlDown | -4121 | 向下,相当于按 Ctrl+↓ |
xlToLeft | -4159 | 向左,相当于按 Ctrl+← |
xlToRight | -4161 | 向右,相当于按 Ctrl+→ |
xlUp | -4162 | 向上,相当于按 Ctrl+↑ |