打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
【原创】VBA学习笔记(20) range().end() 或 cells().end() 的用法

1 Range().End() 或 cells().End()  属性   

1.1 单元格的end属性

  • 两种写法都可以
  • range().end()  
  • cells().end()   

1.2 返回的内容

  • 返回一个 Range 对象
  • 该对象代表包含源区域的区域尾端的单元格。
  • 等同于按键 (End+向上键、End+向下键、End+向左键、End+向右键)
  • 或等同于CTRL+上下左右

2 使用详解

2.1 详细语法

  • 表达式 一个代表 Range 对象的变量。(用数值1,2,3,4 代表也是可以的)
  • 向左 xlToLeft -------1,实际使用时,是以当前range()为基点,先左移一格,然后去找
  • 向右 xlToRight -----2,实际使用时,是以当前range()为基点,先右移一格,然后去找
  • 向上 xlUp -----------3,实际使用时,是以当前range()为基点,先上移一格,然后去找
  • 向下 xlDown -------4,实际使用时,是以当前range()为基点,先下移一格,然后去找

  • 理解先偏移1格再找区域的意思
  • 理解从“源区域” 作为起始点,去找这个 源区域相连的使用区域的边界
  • 如果源区域 本身为空,会找一个相连的整块空区域

  1. sub test1()
  2. '确定的区域,测试单元格1
  3. Debug.Print Range('b5').End(xlUp).Row
  4. Debug.Print Range('b5').End(xlDown).Row
  5. Debug.Print Range('b5').End(xlToLeft).Column
  6. Debug.Print Range('b5').End(xlToRight).Column
  7. Debug.Print
  8. '确定的区域,测试单元格1
  9. Debug.Print Range('b3').End(xlUp).Row
  10. Debug.Print Range('b3').End(xlDown).Row
  11. Debug.Print Range('b3').End(xlToLeft).Column
  12. Debug.Print Range('b3').End(xlToRight).Column
  13. Debug.Print
  14. end sub

2.2 测试比较

  • 查固定range()的范围
  • 查固定range(),但range()内全部为空
  • 查不确定的区域的范围
  1. Sub test_end1()
  2. Debug.Print Range('b:b').Rows.Count
  3. 'Debug.Print Range('b:b').maxrowCount
  4. Debug.Print Range('3:3').Columns.Count
  5. Debug.Print
  6. '确定的区域,这样查也是有意义的
  7. '返回一个 Range 对象,它表示包含源范围的区域末尾的单元格
  8. Debug.Print Range('b1:b5').End(xlUp).Row
  9. Debug.Print Range('b1:b5').End(xlDown).Row
  10. Debug.Print Range('b1:b5').End(xlToLeft).Column
  11. Debug.Print Range('b1:b5').End(xlToRight).Column
  12. Debug.Print
  13. '空区域
  14. Debug.Print Range('d1:d5').End(xlUp).Row
  15. Debug.Print Range('d1:d5').End(xlDown).Row
  16. Debug.Print Range('d1:d5').End(xlToLeft).Column
  17. Debug.Print Range('d1:d5').End(xlToRight).Column
  18. Debug.Print
  19. '查不确定的区域
  20. Debug.Print Range('b:b').End(xlUp).Row
  21. Debug.Print Range('b:b').End(xlDown).Row
  22. Debug.Print Range('b:b').End(xlToLeft).Column
  23. Debug.Print Range('b:b').End(xlToRight).Column
  24. Debug.Print
  25. '查不确定的区域,用处比较大
  26. '比如查B列的上下限界。因为中间可能有空格隔断,所以得这么查
  27. Debug.Print '查B列的上下限界,从列的开始往下查,从列的末尾往上查'
  28. Debug.Print Range('b1').End(xlDown).Row
  29. Debug.Print Range('b65536').End(xlUp).Row
  30. '比如查3行的左右限界。因为中间可能有空格隔断,所以得这么查
  31. Debug.Print '查第3行的左右限界,从行的开始往右查,从行的结尾(尽量大的数)往左边查'
  32. Debug.Print Range('a3').End(xlToRight).Column
  33. Debug.Print Cells(3, 9999).End(xlToLeft).Column
  34. End Sub

2.3 查不确定区域的范围的正确用法(不是从内部查边界,而是从4个外界去逼近边界)

  1. '查不确定的区域,用处比较大
  2. '比如查B列的上下限界。因为中间可能有空格隔断,所以得这么查
  3. Debug.Print '查B列的上下限界,从列的开始往下查,从列的末尾往上查'
  4. Debug.Print Range('b1').End(xlDown).Row
  5. Debug.Print Range('b65536').End(xlUp).Row
  6. '比如查3行的左右限界。因为中间可能有空格隔断,所以得这么查
  7. Debug.Print '查第3行的左右限界,从行的开始往右查,从行的结尾(尽量大的数)往左边查'
  8. Debug.Print Range('a3').End(xlToRight).Column
  9. Debug.Print Cells(3, 9999).End(xlToLeft).Column

3 总结

3.1 利用end() 查内部的边界

  • 查一个连续区域内的边界,在区域内,用这些即可
  • end(xlup) 
  • end(xldown)  
  • end(xltoleft)  
  • end(xltorigjt)  
  • 查一个连续区域内部

3.2 利用end() 查外部的边界(比如查某列最后一个非空单元格)

  • 从外部逼近单元格,需要从  大的行列反过来逼近
  • Range('a65536').End(xlUp)适合查整个sheet的某一列的最后一个有值得单元格。

4   新版EXCEL里,一般用rows.count 代替 a65536

  • Range('a65536').End(xlUp).Row
  • cells(rows.count,1).end(xlup).row
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
VBA如何快速查找一个区域的右下角的那个单元格? 4种方法的比较
【入门必备】Intersect方法/Union方法/End属性
ExcelVBAEnd属性查找”最后”的单元格
关于VBA中单元格和区域的选择与定位问题
如何在指定单元格区域内判断最后一行?
(8).单元格 range ,cells '行 row 列 column 引用
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服