ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: passerwss

[求助] 无法理解的CurrentRegion

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-7-9 21:48 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
看来EXCEL的奥妙还有挺多值得挖掘,学习了,讲得很透彻。

TA的精华主题

TA的得分主题

发表于 2015-10-9 21:06 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我这个新手需要打开脑洞,学习了

TA的精华主题

TA的得分主题

发表于 2015-10-9 22:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 wgw500wan 于 2015-10-9 23:01 编辑

在5楼基础上,对 CurrentRegion 的理解:::::看→→→→→图
我对CurrentRegion的理解3.png

在5楼基础上,对CurrentRegion的理解:::::

在5楼基础上,对CurrentRegion的理解:::::

TA的精华主题

TA的得分主题

发表于 2015-10-9 23:10 | 显示全部楼层
wgw500wan 发表于 2015-10-9 22:00
在5楼基础上,对 CurrentRegion 的理解:::::看→→→→→图

从数学/电脑概念上来说,
Selection.CurrentRegion.Select

表示:
对当前【所选/活动】的【单元格/区域】进行【行、列扩展】、
直至【上下左右边界】的单元格【都是空单元格时】停止扩展。

实际上这个操作,是可以用递归搜寻过程来模拟的。

TA的精华主题

TA的得分主题

发表于 2015-10-9 23:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
香川群子 发表于 2015-10-9 23:10
从数学/电脑概念上来说,
Selection.CurrentRegion.Select

“实际上”前面的能看懂,谢谢[握手]

后面的 “递归搜寻” 对我这个初学者来说,又是一个新的概念,需要脑补!

TA的精华主题

TA的得分主题

发表于 2015-10-10 21:34 | 显示全部楼层
wgw500wan 发表于 2015-10-9 23:19
“实际上”前面的能看懂,谢谢[握手]

后面的 “递归搜寻” 对我这个初学者来说,又是一个新的概念,需 ...

递归搜寻、扩展当前区域的 功能模拟代码:

  1. Dim r&, c&, i1&, i2&, j1&, j2&
  2. Sub test()
  3.     r = Rows.Count: c = Columns.Count
  4.     i1 = ActiveCell.Row: i2 = i1
  5.     j1 = ActiveCell.Column: j2 = j1
  6.     Call CurR
  7.     Range(Cells(i1, j1), Cells(i2, j2)).Select
  8. End Sub
  9. Sub CurR()
  10.     t = False: t2 = False
  11.    
  12.     Do While j1 > 1 'left
  13.         j = j1 - 1
  14.         For i = IIf(i1 = 1, 1, i1 - 1) To IIf(i2 = r, r, i2 + 1)
  15.             If Cells(i, j) <> "" Then j1 = j: t = True: Exit For
  16.         Next
  17.         If t Then t = False: t2 = True Else Exit Do
  18.     Loop
  19.     Do While j2 < c 'right
  20.         j = j2 + 1
  21.         For i = IIf(i1 = 1, 1, i1 - 1) To IIf(i2 = r, r, i2 + 1)
  22.             If Cells(i, j) <> "" Then j2 = j: t = True: Exit For
  23.         Next
  24.         If t Then t = False: t2 = True Else Exit Do
  25.     Loop
  26.    
  27.    
  28.     Do While i1 > 1 'up
  29.         i = i1 - 1
  30.         For j = IIf(j1 = 1, 1, j1 - 1) To IIf(j2 = c, c, j2 + 1)
  31.             If Cells(i, j) <> "" Then i1 = i: t = True: Exit For
  32.         Next
  33.         If t Then t = False: t2 = True Else Exit Do
  34.     Loop
  35.     Do While i2 < r 'down
  36.         i = i2 + 1
  37.         For j = IIf(j1 = 1, 1, j1 - 1) To IIf(j2 = c, c, j2 + 1)
  38.             If Cells(i, j) <> "" Then i2 = i: t = True: Exit For
  39.         Next
  40.         If t Then t = False: t2 = True Else Exit Do
  41.     Loop
  42.    
  43. '    Range(Cells(i1, j1), Cells(i2, j2)).Select
  44.     If t2 Then Call CurR

  45. End Sub
复制代码


算法原理:
从当前位置开始,向左、向右、向上、向下,搜寻更外侧的行/列区域内是否有非空单元格。
有就扩展当前的行/列,没有就不变。

继续递归此过程,直至所有的左右上下方向都没有能够扩展时停止。

TA的精华主题

TA的得分主题

发表于 2015-10-14 14:02 | 显示全部楼层
香川群子 发表于 2015-10-10 21:34
递归搜寻、扩展当前区域的 功能模拟代码:

VBA初学者,学习中。。。

TA的精华主题

TA的得分主题

发表于 2015-10-14 14:14 | 显示全部楼层
wudixin96 发表于 2012-5-7 17:24
如图运行一下代码,你就知道了。

看我借鉴和扩展,更详细了一些,感谢你给我带来的灵感和进步!!


我在23楼:
http://club.excelhome.net/forum.php?mod=redirect&goto=findpost&ptid=864745&pid=8404980


[url=我对 CurrentRegion 的理解,有图有真相! http://club.excelhome.net/thread-1234213-1-1.html (出处: ExcelHome技术论坛)]我的分享:[/url]我对 CurrentRegion 的理解,囿图囿真相!
http://club.excelhome.net/thread-1234213-1-1.html
(出处: ExcelHome技术论坛)






TA的精华主题

TA的得分主题

发表于 2016-3-16 16:03 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2016-8-31 14:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
刚学习CurrentRegion的用法,就找到这么好的贴子,必须标记。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-12-14 06:29 , Processed in 0.026487 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表