Worksheets("sheet1").Range("H2").Value = _ Worksheets("sheet1").Range("A1").CurrentRegion.ListHeaderRows
上述代码在示例工作表中运行后,将返回“1”,即单元格A1所在区域的标题行的行数为1。
(2)返回指定(或活动)单元格所在区域的行数
Worksheets("sheet1").Range("H3").Value = _ Worksheets("sheet1").Range("A1").CurrentRegion.Rows.Count
上述代码在示例工作表中运行后,将返回“11”,即单元格A1所在区域的行数为11。
(3)返回指定(或活动)单元格所在区域的列数
Worksheets("sheet1").Range("H4").Value = _ Worksheets("sheet1").Range("A1").CurrentRegion.Columns.Count
上述代码在示例工作表中运行后,将返回“4”,即单元格A1所在区域的列数为4。
(4)返回指定(或活动)单元格所在区域的单元格数
Worksheets("sheet1").Range("H5").Value = _ Worksheets("sheet1").Range("A1").CurrentRegion.Cells.Count
上述代码在示例工作表中运行后,将返回“44”,即单元格A1所在区域的单元格数为44。
(5)在指定(或活动)单元格所在区域中选取除标题行以外的数据区域
Worksheets("sheet1").Range("A1").CurrentRegion.Resize( _ Worksheets("sheet1").Range("A1").CurrentRegion.Rows.Count - Worksheets("sheet1"). _ Range("A1").CurrentRegion.ListHeaderRows, Worksheets("sheet1").Range("A1").CurrentRegion. _ Columns.Count).Offset(1, 0).Select
上述代码在示例工作表中运行后,将选取单元格A1所在区域中除标题行外的数据区域,即单元格区域A2:D11。
下面,将上述代码综合成一个完整的示例以演示CurrentRegion属性的一些用法。程序代码如下:
Sub testCurrentRegion() Dim rng As Range, ws As Worksheet Set ws = ActiveWorkbook.Worksheets("sheet1") Set rng = ws.Range("A1").CurrentRegion ws.Range("G2") = "当前区域标题行数" ws.Range("H2").Value = rng.ListHeaderRows ws.Range("G3") = "当前区域的行数" ws.Range("H3").Value = rng.Rows.Count ws.Range("G4") = "当前区域的列数" ws.Range("H4").Value = rng.Columns.Count ws.Range("G5").Value = "当前区域的单元格数" ws.Range("H5").Value = rng.Cells.Count ws.Columns("G:G").EntireColumn.AutoFit MsgBox "选取当前区域中除标题行以外的区域" rng.Resize(rng.Rows.Count - rng.ListHeaderRows, rng.Columns.Count).Offset(1, 0).Select End Sub
运行后的结果如下图3所示,示例文档见:
图3
(6)复制当前区域的数据到另一位置
Sub CopyCurrentRegion() Sheets("sheet1").Range("A1").CurrentRegion.Copy Sheets("sheet2").Range("A1") End Sub
上述代码将工作表Sheet1中单元格A1所在的区域复制到工作表sheet2中以单元格A1开始的单元格区域中。
(7)格式化当前区域中的数据
Sub FormatCurrentRegion() With ActiveCell.CurrentRegion .Font.Bold = True .Font.ColorIndex = 3 End With End Sub
上述代码将工作表中活动单元格所在区域数据加粗且设置为红色。
(8)在当前区域中自动套用格式
Sub testAutoFormatCurrentRegion() Worksheets("sheet1").Range("A1").CurrentRegion.AutoFormat End Sub
上述代码将在工作表sheet1中单元格A1所在区域自动套用默认的格式,当然,您可以设置所需套用的格式,默认值为xlRangeAutoFormatClassic1。
一些示例
[示例1]在当前区域中查找空白单元格并填充
如下图4所示的工作表,现在要使用空白单元格上方的有数据的单元格中的数据来填充空白单元格。
图4
可以编写如下的代码:
Sub FillBlankCells() Worksheets("sheet1").Range("A1").CurrentRegion.SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C" Worksheets("sheet1").Range("A1").CurrentRegion.Value = Worksheets("sheet1").Range("A1").CurrentRegion.Value End Sub
运行代码后,工作表中单元格A1所在区域中的空白单元格被相应数据填充,如图5所示。
图5
示例下载:
[示例2] 一个排序的简单示例
如图6所示的工作表,现在对第3列进行排序,按降序排列。
图6
编写的代码如下:
Sub testSort() Dim rng As Range Set rng = Worksheets("sheet1").Cells(1, 1).CurrentRegion rng.Sort Key1:=rng.Cells(1, 3), Order1:=xlDescending, Header:=xlYes End Sub
运行代码后,工作表中的数据将按照第3列的数据从大到小进行排列,如图7所示。
图7
示例下载:
小结
1、CurrentRegion属性的基本语法为:
<单元格对象>.CurrentRegion
2、可以先使用CurrentRegion属性返回指定单元格或者活动单元格所在的区域,然后使用其它的属性对该区域的数据进行操作。
联系客服