ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

VBA常用技巧代码解析

    [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-2-10 07:57 | 显示全部楼层

第1部分Range(单元格)对象

本帖已被收录到知识树中,索引项:开发帮助和教程
技巧3         获得指定行、列中的最后一个非空单元格
       使用VBA对工作表进行操作时,经常需要定位到指定行或列中最后一个非空单元格,此时可以使用Range对象的End属性,在取得单元格对象后便能获得该单元格的相关属性,如单元格地址、行列号、数值等,如下面的代码所示。
  1. #001  Sub LastRow()
  2. #002      Dim rng As Range
  3. #003      Set rng = Sheet1.Range("A65536").End(xlUp)
  4. #004      MsgBox "A列中最后一个非空单元格是" & rng.Address(0, 0) _
  5. #005          & ",行号" & rng.Row & ",数值" & rng.Value
  6. #006      Set rng = Nothing
  7. #007  End Sub
复制代码
代码解析:
       LastRow过程使用消息框显示工作表中A列最后非空单元格的地址、行号和数值。
       End属性返回一个Range对象,该对象代表包含源区域的区域尾端的单元格。等同于按键<End+向上键>、<End+向下键>、<End+向左键>或<End+向右键>,语法如下:
expression.End(Direction)
       参数expression是必需的,一个有效的对象。
       参数Direction是可选的,所要移动的方向,可以为如图所示的XlDirection 常量之一。
XlDirection 常量.jpg
       Range对象的End属性返回的是一个Range对象,因此可以直接使用该对象的属性和方法。
    运行LastRow过程结果如所示。

获得A列最后一个非空单元格.jpg
       通过修改相应的参数,能够获得指定行中最后一个非空单元格,如下面的代码所示。
  1. #001  Sub LastColumn()
  2. #002      Dim rng As Range
  3. #003      Set rng = Sheet1.Range("IV1").End(xlToLeft)
  4. #004      MsgBox "第一行中最后一个非空单元格是" & rng.Address(0, 0) _
  5. #005          & ",列号" & rng.Column & ",数值" & rng.Value
  6. #006      Set rng = Nothing
  7. #007  End Sub
复制代码
代码解析:
       LastColumn过程使用消息框显示工作表中第一行最后一个非空单元格的地址、列号和数值,所示
获得第一行最后一个非空单元格.jpg

[ 本帖最后由 yuanzhuping 于 2009-2-16 22:58 编辑 ]

技巧3 获得指定行、列中的最后一个非空单元格.rar

5.73 KB, 下载次数: 4469

TA的精华主题

TA的得分主题

发表于 2009-2-10 08:00 | 显示全部楼层
感谢楼主分享,能同时更新上传word 文档吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-2-10 08:11 | 显示全部楼层
原帖由 tiantiansay 于 2009-2-10 08:00 发表
感谢楼主分享,能同时更新上传word 文档吗?

在第1部分内容整理结束后我会将word 文档上传,现在还只是个目录和一部分的内容。

TA的精华主题

TA的得分主题

发表于 2009-2-10 08:18 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-2-10 08:58 | 显示全部楼层

第1部分Range(单元格)对象

技巧4         定位单元格
       在Excel中使用定位对话框可以选中工作表中特定的单元格区域,而在VBA中则使用SpecialCells方法,如下面的代码所示。

  1. #001  Sub SpecialAddress()
  2. #002      Dim rng As Range
  3. #003      Set rng = Sheet1.UsedRange.SpecialCells(xlCellTypeFormulas)
  4. #004      rng.Select
  5. #005      MsgBox "工作表中有公式的单元格为: " & rng.Address
  6. #006      Set rng = Nothing
  7. #007  End Sub
复制代码

代码解析:
       SpecialAddress过程使用SpecialCells方法选中工作表中有公式的单元格,并用消息框显示其地址。
       SpecialCells方法返回一个Range对象,该对象代表与指定类型及值相匹配的所有单元格,语法如下:
expression.SpecialCells(Type, Value)
       参数expression是必需的,返回一个有效的对象。
       参数Type是必需的,要包含的单元格,可为表格所列的XlCellType常量之一。
XlCellType常量.jpg
       第3行代码将SpecialCells方法的Type参数设置为xlCellTypeFormulas,返回的是含有公式的单元格,通过修改相应的参数可以返回不同的单元格。
       参数Value是可选的,如果Type参数为xlCellTypeConstants或xlCellTypeFormulas, 此参数可用于确定结果中应包含哪几类单元格。将某几个值相加可使此方法返回多种类型的单元格。如果省略将选定所有常量或公式,可为表格所列的 XlSpecialCellsValue常量之一。
XlSpecialCellsValue常量.jpg
       第5行代码使用消息框显示工作表中含有公式单元格的地址。SpecialCells方法返回的是Range对象,因此可以直接使用该对象的属性和方法。
       运行SpecialAddress过程结果如图所示。
SpecialCells方法.jpg

[ 本帖最后由 yuanzhuping 于 2009-2-16 21:54 编辑 ]

技巧4 定位单元格.rar

7.15 KB, 下载次数: 3974

TA的精华主题

TA的得分主题

发表于 2009-2-10 09:43 | 显示全部楼层
谢谢分享,期待Y版再写传说。

TA的精华主题

TA的得分主题

发表于 2009-2-10 09:54 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-2-10 10:09 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-2-10 13:34 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-2-10 14:34 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-25 02:58 , Processed in 0.037045 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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