我的地盘我作主——CurrentRegion属性示例
分类:ExcelVBA>>ExcelVBA对象模型编程>>常用对象>>Range对象


CurrentRegion属性代表什么
您可能经常在程序代码中看到CurrentRegion属性,它是一个非常有用的属性,返回活动单元格所在的周围由空行和空列组成的单元格区域(即通常所说的当前区域),如图1所示。
 图1
具体地说,当前区域即活动单元格所在的矩形区域,该矩形区域的每一行和每一列中至少包含有一个数据,其周围是空行和空列,图1中列举了其中的4种情形(见蓝色阴影区域)。在当前区域范围内,不管活动单元格是哪一个单元格,其所在的当前区域均为同一区域,如上例中的B5:D7区域,活动单元格B5的当前区域为B5:D7,当活动单元格为C6时,其当前区域仍为B5:D7。
使用CurrentRegion属性相当于在Excel工作表中选择菜单“编辑——定位”命令,在弹出的“定位”对话框中单击“定位条件”按钮,然后在“定位条件”对话框中选中“当前区域”选项按钮,或者相当于使用Ctrl+Shift+*组合键。


CurrentRegion属性的一些基本应用
CurrentRegion属性可用于很多操作,下面通过如图2所示的工作表示例讲解该属性的应用。
  图2
(1) 返回指定(或活动)单元格所在区域中标题行的行数
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所示,示例文档见 CurrentRegion属性示例.xls。 UploadFiles/2006-11/117180718.rar
  图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属性返回指定单元格或者活动单元格所在的区域,然后使用其它的属性对该区域的数据进行操作

CurrentRegion属性示例相关推荐

  1. VBA CurrentRegion属性示例

    CurrentRegion属性与UsedRange属性是我们在VBA编程中经常用到的2个极为重要的属性,它们有相同之处,也有不同处.下面先介绍CurrentRegion属性. CurrentRegio ...

  2. VBA之CurrentRegion属性

    CurrentRegion属性代表什么您可能经常在程序代码中看到CurrentRegion属性,它是一个非常有用的属性,返回活动单元格所在的周围由空行和空列组成的单元格区域(即通常所说的当前区域),如 ...

  3. jsf tree组件_JSF UI组件标签属性示例教程

    jsf tree组件 JSF provides a wide variety of ui component tags along with a long range of attributes. T ...

  4. 微信小程序实现通过js操作wxml的wxss属性示例

    微信小程序实现通过js操作wxml的wxss属性示例 前言 实现思路 实现代码 前言 在web端.手机端.webApp中可以通过js获取dom的方式设置dom属性. 微信小程序中,不能通过这种方式进行 ...

  5. VBA CurrentRegion、UsedRange属性示例

    CurrentRegion返回活动单元格所在的周围由空行和空列组成的单元格区域(即通常所说的当前区域),该区域为活动单元格附近不为空的单元格范围,该范围截止区域为空行.空列,以示例说话. 以下试验环境 ...

  6. string.length_C.中的String.Length属性示例

    string.length C#String.Length属性 (C# String.Length property) String.Length property is used to get th ...

  7. jquery设置css样式、style属性 示例(超强解析)

    jQuery 一.CSS 1.css(name) 2.css(properties) 3.css(name,value) 二.位置 1.offset() 2.position() 3.scrollTo ...

  8. uniapp - Map地图组件属性示例

    目录 1.markers :点标记,用于在地图上显示标记的位置. 2.点聚合: 3.polygons : 4.include-points:可以实现自动缩放展示视图内所有的点标记. 5.polylin ...

  9. c2chars_C.中的String.Chars []属性示例

    c2chars C#String.Chars []属性 (C# String.Chars[] property) To access the elements/characters from a st ...

最新文章

  1. Spring MVC - URL路径映射
  2. python处理数据的包_在Python中利用Into包整洁地进行数据迁移的教程
  3. sql查询百分之20到百分之40的数据_数据库基础学习——SQL语言知识总结(6)
  4. UBUNTU上VNC 配置
  5. 【object-c基础】Object-c基础之三:面对对象开发@interface,@implementation
  6. android应用开发全程实录-实现甩动拨打和挂断电话
  7. ukt机器人_doc/readme/feishu.md · 贫道法号-乱来/PrometheusAlert - Gitee.com
  8. 35数据结构与算法分析之---最短路径
  9. java web与android互通的aes算法
  10. 赶在520之前,程序员如何用Python送上最特别的“我爱你”表白
  11. 2012服务器清理系统盘,windows2012磁盘清理
  12. android 手机查看分辨率,adb命令查看报名和查看手机分辨率
  13. Scrapy——基本用法(命令行工具、Item、Spiders)
  14. PHP使用声网的页面录制、合流录制、单流录制
  15. 达梦数据库初始化常用参数查询及介绍
  16. YoLov3目标检测代码C++版本运行
  17. 基于jQuery的鼠标右键菜单
  18. 【线段树】区间修改(区间覆盖、区间权值加)标记下放操作的逻辑顺序
  19. 一次探索:基于香农熵预测DNA中编码序列,python实现。
  20. ARM架构与编程--基于STM32F103 (1)LED原理图

热门文章

  1. sass-loader
  2. 得了《狂飙》高启强同款“绝症”,20岁女子哭笑不得,医生:还有救......
  3. 【小程序】模板与配置
  4. mysql 营业时间_mysql – 在数据库中存储各种商店开放时间的方法
  5. Redis 集合(Set)方法使用详解
  6. 机器学习笔记 - 特征分解
  7. 从开心网的奴隶安抚与折磨想到员工积极性与人力成本的问题
  8. Linux下像vhd一样的东西,如何在Linux中附加VHDx或VHD文件?
  9. 在市场开拓和下沉中完成数字化升级
  10. pygame-最易上手的2d游戏引擎