收藏 分享(赏)

VBA常用技巧.doc

上传人:tangtianxu1 文档编号:3006907 上传时间:2018-10-01 格式:DOC 页数:603 大小:18.08MB
下载 相关 举报
VBA常用技巧.doc_第1页
第1页 / 共603页
VBA常用技巧.doc_第2页
第2页 / 共603页
VBA常用技巧.doc_第3页
第3页 / 共603页
VBA常用技巧.doc_第4页
第4页 / 共603页
VBA常用技巧.doc_第5页
第5页 / 共603页
点击查看更多>>
资源描述

1、VBA 常用技巧代码解析 yuanzhuping1VBA 常用技巧目录目录VBA 常用技巧 .1第 1 章 Range(单元格)对象 .10技巧 1 单元格的引用方法 10技巧 2 选定单元格区域的方法 15技巧 3 获得指定行、列中的最后一个非空单元格 17技巧 4 定位单元格 20技巧 5 查找单元格 21技巧 6 替换单元格内字符串 26技巧 7 复制单 元格区域 27技巧 8 仅复制数值到另一区域 30技巧 9 单元格自动进入编辑状态 32技巧 10 禁用单元格拖放功能 32技巧 11 单元格格式操作 33技巧 12 单元格中的数据有效性 39技巧 13 单元格中的公式 44技巧 14

2、 单元格中的批注 49技巧 15 合并单元格操作 52技巧 16 高亮显示单元格区域 57技巧 17 双击被保护单元格时不显示提示消息框 58技巧 18 重新计算工作表指定区域 60技巧 19 录入数据后单元格自动保护 60技巧 20 工作表事件 Target 参数的使用方法 .62第 2 章 Worksheet(工作表)对象 65技巧 21 引用工作表的方式 65技巧 22 选择工作表的方法 67技巧 23 遍历工作表的方法 68技巧 24 在工作表中上下翻页 71技巧 25 工作表的添加与删除 72技巧 26 禁止删除指定工作表 76技巧 27 自动建立工作表目录 78技巧 28 工作表的

3、深度隐藏 80技巧 29 防止更改工作表的名称 82技巧 30 工作表中 一次插入多行 83技巧 31 删除工作表中的空行 84技巧 32 删除工作表的重复行 86技巧 33 定位删除特定内容所在的行 88VBA 常用技巧代码解析 yuanzhuping2技巧 34 判断是否选中整行 89技巧 35 限制工作表的滚动区域 90技巧 36 复制自动筛选后的数据区域 91技巧 37 使用高级筛选获得不 重复记录 93技巧 38 工作表的保护与解除保护 94技巧 39 奇偶页打印 97第 3 章 Wordbook(工作簿)对象 .99技巧 40 工作簿的引用方法 99技巧 41 新建工作簿文件 10

4、1技巧 42 打开指定的工作簿 103技巧 43 判断指定工作簿是否打开 106技巧 44 禁用宏则关闭工作簿 107技巧 45 关闭工作簿不显示保存对话框 111技巧 46 禁用工作簿的关闭按钮 113技巧 47 保存工作簿的方法 115技巧 48 保存指定工作表为工作簿文件 116技巧 49 打印预览时不触发事件 118技巧 50 设置工作簿文档属性信息 120技巧 51 不打开工作簿取得其他工作簿数据 121技巧 52 返回窗口的可视区域地址 126第 4 章 Shape(图形) 、Chart(图表)对象 .128技巧 53 在工作表中添加图形 128技巧 54 导出工作表中的图片 13

5、3技巧 55 在工作表中添加艺术字 135技巧 56 遍历工作表中的图形 137技巧 57 移动、旋转图片 139技巧 58 工作表中自动插入图片 140技巧 59 固定工作表中图形的位置 143技巧 60 使用 VBA 自动生成图表 .145技巧 61 使用独立窗口显示图表 149技巧 62 导出工作表中的图表 150技巧 63 多图表制作 151第 5 章 Application 对象 155技巧 64 取得 Excel 版本信息 .155技巧 65 取得当前用户名称 156技巧 66 Excel 中的“定时器” .156技巧 67 设置活动打印机的名称 158技巧 68 屏蔽、改变组合键

6、的功能 159技巧 69 设置 Excel 窗口标题栏 .160技巧 70 自定义 Excel 状态栏 .161技巧 71 灵活退出 Excel162技巧 72 隐藏 Excel 主窗口 .163第 6 章 使用对话框 167技巧 73 使用 Msgbox 函数 .167VBA 常用技巧代码解析 yuanzhuping3技巧 74 自动关闭的消息框 174技巧 75 使用 InputBox 函数 .176技巧 76 使用 InputBox 方法 .180技巧 77 内置对话框 183技巧 78 调用操作系统“关于”对话框 190第 7 章 菜单和工具栏 192技巧 79 在菜单中添加菜单项 1

7、92技巧 80 在菜单栏指定位置添加菜单 195技巧 81 屏蔽和删除工作表菜单 197技巧 82 改变系统菜单的操作 198技巧 83 定制自己的系统菜单 199技巧 84 改变菜单按钮图标 205技巧 85 右键快捷菜单增加菜单项 206技巧 86 自定义右键快捷菜单 207技巧 87 使用右键菜单制作数据有效性 210技巧 88 禁用工作表右键菜单 212技巧 89 创建自定义工具栏 213技巧 90 自定义工具栏按钮图标 216技巧 91 自定义工作簿图标 217技巧 92 移除工作表的最小最大化和关闭按钮 218技巧 93 在工具栏上添加下拉列表框 219技巧 94 屏蔽工作表的复制

8、功能 221技巧 95 禁用工具栏的自定义 222技巧 96 屏蔽所有的命令栏 225技巧 97 恢复 Excel 的命令栏 .226第 8 章 控件与用户窗体 228技巧 98 限制文本框的输入 228技巧 99 文本框添加右键快捷菜单 230技巧 100 文本框回车自动输入 234技巧 101 自动选择文本框内容 235技巧 102 设置文本框数据格式 236技巧 103 限制文本框的输入长度 238技巧 104 将光标返回文本框中 239技巧 105 文本框的自动换行 241技巧 106 多个文本框数据相加 243技巧 107 控件跟随活动单元格 244技巧 108 高亮显示按钮 245

9、技巧 109 组合框和列表框添加列表项的方法 247技巧 110 去除列表框数据源的重复值和空格 251技巧 111 移动列表框条目 253技巧 112 允许多项选择的列表框 256技巧 113 多列组合框和列表框的设置 259技巧 114 输入时逐步提示信息 263技巧 115 二级组合框 270VBA 常用技巧代码解析 yuanzhuping4技巧 116 使用 DTP 控件输入日期 272技巧 117 使用 RefEdit 控件选择区域 .275技巧 118 如何注册控件 276技巧 119 遍历控件的方法 279技巧 120 使微调框最小变动量小于 1.285技巧 121 不打印工作表

10、中的控件 287技巧 122 在框架中使用滚动条 289技巧 123 使用多页控件 291技巧 124 标签文字垂直居中对齐 293技巧 125 使用 TabStrip 控件 295技巧 126 显示 GIF 动画图片 .297技巧 127 播放 Flash 文件 .300技巧 128 在工作表中添加窗体控件 302技巧 129 在工作表中添加 ActiveX 控件 307技巧 130 使用 spreadsheet 控件 .311技巧 131 使用 Listview 控件 314技巧 132 调用非模式窗体 326技巧 133 进度条的制作 328技巧 134 使用 TreeView 控件显示

11、层次 333技巧 135 用户窗体添加图标 337技巧 136 用户窗体添加最大最小化按纽 339技巧 137 禁用窗体标题栏的关闭按钮 340技巧 138 屏蔽窗体标题栏的关闭按钮 341技巧 139 无标题栏和边框的窗体 343技巧 140 制作年月选择窗体 344技巧 141 自定义窗体中的鼠标指针类型 347技巧 142 调整窗体的显示位置 348技巧 143 由鼠标确定窗体显示位置 350技巧 144 用户窗体的打印 351技巧 145 使用自定义颜色设置窗体颜色 353技巧 146 在窗体中显示图表 354技巧 147 窗体运行时调整控件大小 357技巧 148 在用户窗体上添加菜

12、单 360技巧 149 在用户窗体上添加工具栏 364技巧 150 使用代码添加窗体及控件 369技巧 151 用户窗体的全屏显示 375技巧 152 在用户窗体上添加状态栏 377第 9 章 函数的使用 381技巧 153 调用工作表函数求和 381技巧 154 查找最大、最小值 381技巧 155 不重复值的录入 383技巧 156 获得当月的最后一天 385技巧 157 四舍五入运算 386技巧 158 使用字符串函数 387VBA 常用技巧代码解析 yuanzhuping5技巧 159 使用日期函数 389技巧 160 判断是否为数值 393技巧 161 格式化数值、日期和时间 394

13、技巧 162 个人所得税自定义函数 396技巧 163 人民币大写函数 398技巧 164 列号转换为列标 400技巧 165 判断工作表是否为空表 401技巧 166 查找指定工作表 402技巧 167 查找指定工作簿是否打开 404技巧 168 取得应用程序的安装路径 404技巧 169 数组的使用 406第 10 章 文件操作 412技巧 170 导入文本文件 412技巧 171 将数据写入文本文件 416技巧 172 文件修改的日期和时间 419技巧 173 查找文件或文件夹 420技巧 174 获得当前文件夹的名称 422技巧 175 创建和删除文件夹 422技巧 176 重命名文件

14、或文件夹 423技巧 177 复制指定的文件 424技巧 178 删除指定的文件 425技巧 179 搜索特定的文件 426技巧 180 使用 WSH 处理文件 .428第 11 章 其他应用 441技巧 181 取得电脑名称 441技巧 182 取得逻辑盘序列号 442技巧 183 使用 API 取得硬盘信息 .443技巧 184 使用数字签名 444技巧 185 暂停代码的运行 449技巧 186 定时关机 450技巧 187 打开指定的网页 451技巧 188 VBE 的操作 452技巧 189 保护 VBA 代码 .459技巧 190 优化代码 462技巧 191 取得文件的基本名称

15、469技巧 192 防止用户中断代码运行 470技巧 193 加班费计算表 472技巧 194 制作发放条 498技巧 195 费用统计表 501技巧 196 职工花名册 516技巧 197 收据系统 529技巧 198 职工考勤系统 567VBA 常用技巧代码解析 yuanzhuping6第 1 章 Range(单元格)对象Range 对象是 Excel 应用程序中最常用的对象,一个 Range 对象代表一个单元格、一行、一列、包含一个或者更多单元格区域(可以是连续的单元格,也可以是不连续的单元格)中选定的单元格,甚至是多个工作表上的一组单元格,在操作 Excel 内的任何区域之前都需要将其

16、表示为一个 Range 对象,然后使用该 Range 对象的方法和属性。技巧 1 单元格的引用方法在 VBA 中经常需要引用单元格或单元格区域区域,主要有以下几种方法。1-1 使用 Range 属性VBA 中可以使用 Range 属性返回单元格或单元格区域,如下面的代码所示。#001 Sub RngSelect() #002 Sheet1.Range(“A3:F6, B1:C5“).Select#003 End Sub代码解析:RngSelect 过程使用 Select 方法选中 A3:F6,B1:C5 单元格区域。Range 属性返回一个 Range 对象,该对象代表一个单元格或单元格区域,

17、语法如下:Range(Cell1, Cell2)参数 Cell1 是必需的,必须为 A1 样式引用的宏语言,可包括区域操作符(冒号) 、相交区域操作符(空格)或合并区域操作符(逗号) 。也可包括美元符号(即绝对地址,如“$A$1”) 。可在区域中任一部分使用局部定义名称,如 Range(“B2:LastCell“),其中LastCell 为已定义的单元格区域名称。参数 Cell2 是可选的,区域左上角和右下角的单元格。运行 Sub RngSelect 过程,选中 A3:F6, B1:C5 单元格区域,如 图 1-1 所示。VBA 常用技巧代码解析 yuanzhuping7图 1-1 使用 Ra

18、nge 属性引用单元格区域注意 如果没有使用对象识别符,Range 属性返回活动表的一个区域,如果活动表不是工作表,则该属性无效。1-2 使用 Cells 属性使用 Cells 属性返回一个 Range 对象,如下面的代码所示。#001 Sub Cell()#002 Dim icell As Integer#003 For icell = 1 To 100#004 Sheet2.Cells(icell, 1).Value = icell#005 Next#006 End Sub代码解析:Cell 过程使用 For.Next 语句为工作表中的 A1:A100 单元格区域填入序号。Cells 属性

19、指定单元格区域中的单元格,语法如下:Cells(RowIndex, ColumnIndex)参数 RowIndex 是可选的,表示引用区域中的行序号。参数 ColumnIndex 是可选的,表示引用区域中的列序号。如果缺省参数,Cells 属性返回引用对象的所有单元格。Cells 属性的参数可以使用变量,因此经常应用于在单元格区域中循环。1-3 使用快捷记号在 VBA 中可以将 A1 引用样式或命名区域名称使用方括号括起来,作为 Range 属性的快捷方式,这样就不必键入单词“Range”或使用引号,如下面的代码所示。VBA 常用技巧代码解析 yuanzhuping8#001 Sub Fast

20、mark()#002 A1:A5 = 2#003 Fast = 4#004 End Sub代码解析:Fastmark 过程使用快捷记号为单元格区域赋值。第 2 行代码使用快捷记号将活动工作表中的 A1:A5 单元格赋值为 2。第 3 行代码将工作簿中已命名为“Fast”的单元格区域赋值为 4。注意 使用快捷记号引用单元格区域时只能使用固定字符串而不能使用变量。1-4 使用 Offset 属性可以使用 Range 对象的 Offset 属性返回一个基于引用的 Range 对象的单元格区域,如下面的代码所示。#001 Sub Offset()#002 Sheet3.Range(“A1:C3“).O

21、ffset(3, 3).Select#003 End Sub代码解析:Offset 过程使用 Range 对象的 Offset 属性选中 A1:A3 单元格偏移三行三列后的区域。应用于 Range 对象的 Offset 属性的语法如下:expression.Offset(RowOffset, ColumnOffset)参数 expression 是必需的,该表达式返回一个 Range 对象。参数 RowOffset 是可选的,区域偏移的行数(正值、负值或 0(零) ) 。正值表示向下偏移,负值表示向上偏移,默认值为 0。参数 ColumnOffset 是可选的,区域偏移的列数(正值、负值或 0

22、(零) ) 。正值表示向右偏移,负值表示向左偏移,默认值为 0。运行 Offset 过程,选中 A1: A3 单元格偏称三行三列后的区域,如 图 1-2 所示。VBA 常用技巧代码解析 yuanzhuping9图 1-2 使用 Range 对象的 Offset 属性1-5 使用 Resize 属性使用 Range 对象的 Resize 属性调整指定区域的大小,并返回调整大小后的单元格区域,如下面的代码所示。#001 Sub Resize()#002 Sheet4.Range(“A1“).Resize(3, 3).Select#003 End Sub代码解析:Resize 过程使用 Range

23、对象的 Resize 属性选中 A1 单元格扩展为三行三列后的区域。Resize 属性的语法如下:expression.Resize(RowSize, ColumnSize)参数 expression 是必需的,返回要调整大小的 Range 对象参数 RowSize 是可选的,新区域中的行数。如果省略该参数,则该区域中的行数保持不变。参数 ColumnSize 是可选的,新区域中的列数。如果省略该参数。则该区域中的列数保持不变。运行 Resize 过程,选中 A1 单元格扩展为三行三列后的区域,如 图 1-3 所示。图 1-3 使用 Resize 属性调整区域大小VBA 常用技巧代码解析 yu

24、anzhuping101-6 使用 Union 方法使用 Union 方法可以将多个非连续区域连接起来成为一个区域,从而可以实现对多个非连续区域一起进行操作,如下面的代码所示。#001 Sub UnSelect()#002 Union(Sheet5.Range(“A1:D4“), Sheet5.Range(“E5:H8“).Select#003 End Sub代码解析:UnSelect 过程选择单元格 A1:D4 和 E5:H8 所组成的区域。Union 方法返回两个或多个区域的合并区域,语法如下:expression.Union(Arg1, Arg2, .)其中参数 expression 是

25、可选的,返回一个 Application 对象。参数 Arg1, Arg2, .是必需的,至少指定两个 Range 对象。运行 UnSelect 过程,选中单元格 A1:D4 和 E5:H8 所组成的区域,如 图 1-4 所示。图 1-4 使用 Union 方法将多个非连续区域连接成一个区域1-7 使用 UsedRange 属性使用 UsedRange 属性返回指定工作表上已使用单元格组成的区域,如下面的代码所示。#001 Sub UseSelect()#002 Sheet6.UsedRange.Select#003 End Su代码解析:UseSelect 过程使用 UsedRange 属性

26、选择工作表上已使用单元格组成的区域,包括空单元格。如工作表中已使用 A1 单元格和 D8 单元格,运行 UseSelect 过程将选择 A1 到D8 单元格区域,如 图 1-5 所示。VBA 常用技巧代码解析 yuanzhuping11图 1-5 使用 UsedRange 属性选择已使用区域1-8 使用 CurrentRegion 属性使用 CurrentRegion 属性返回指定工作表上当前的区域,如下面的代码所示。#001 Sub CurrentSelect()#002 Sheet7.Range(“A5“).CurrentRegion.Select#003 End Sub代码解析:Curr

27、entSelect 过程使用 CurrentRegion 属性选择工作表上 A5 单元格当前的区域,当前区域是一个边缘是任意空行和空列组合成的范围。运行 CurrentSelect 过程将选择 A5 到 B6 单元格区域,如 图 1-6 所示。图 1-6 CurrentRegion 属性选择当前的区域技巧 2 选定单元格区域的方法2-1 使用 Select 方法在 VBA 中一般使用 Select 方法选定单元格或单元格区域,如下面的代码所示。VBA 常用技巧代码解析 yuanzhuping12#001 Sub RngSelect()#002 Sheet3.Activate#003 Sheet

28、3.Range(“A1:B10“).Select#004 End Sub代码解析:RngSelect 过程使用 Select 方法选定 Sheet3 中的 A1:B10 单元格区域,Select 方法应用于 Range 对象时语法如下:expression.Select(Replace)参数 expression 是必需的,一个有效的对象。参数 Replace 是可选的,要替换的对象。使用 Select 方法选定单元格时,单元格所在的工作表必需为活动工作表,所以在第 2行代码中先使用 Activate 方法使 Sheet3 成为活动工作表,否则 Select 方法有可能出错,显示如 图 2-1

29、 所示的错误提示。图 2-1 Select 方法无效提示2-2 使用 Activate 方法还可以使用 Activate 方法选定单元格或单元格区域,如下面的代码所示。#001 Sub RngActivate()#002 Sheet3.Activate#003 Sheet3.Range(“A1:B10“).Activate#004 End Sub代码解析:RngActivate 过程使用 Activate 方法选定 Sheet3 中的 A1:B10 单元格区域,Activate方法应用于 Range 对象时语法如下:expression.Activate使用 Activate 方法选定单元格时

30、,单元格所在的工作表也必需为活动工作表,否则Activate 方法有可能出错,显示如 图 2-2 所示的错误提示。VBA 常用技巧代码解析 yuanzhuping13图 2-2 Activate 方法无效提示2-3 使用 Goto 方法使用 Goto 方法无需使单元格所在的工作表成为活动工作表,如下面的代码所示。#001 Sub RngGoto()#002 Application.Goto Reference:=Sheet3.Range(“A1:B10“), scroll:=True#003 End Sub代码解析:RngGoto 过程使用 Goto 方法选定 Sheet3 中的 A1:B10

31、 单元格区域,并滚动工作表以显示该单元格。Goto 方法选定任意工作簿中的任意区域或任意 Visual Basic 过程,并且如果该工作簿未处于活动状态,就激活该工作簿,语法如下:expression.Goto(Reference, Scroll)参数 expression 是必需的,返回一个 Application 对象。参数 Reference 是可选的,Variant 类型,指定目标。可以是 Range 对象、包含R1C1-样式记号的单元格引用的字符串或包含 Visual Basic 过程名的字符串。如果省略本参数,目标将是最近一次用 Goto 方法选定的区域。参数 Scroll 是可选

32、的, Variant 类型,如果该值为 True,则滚动窗口直至目标区域的左上角单元格出现在窗口的左上角。如果该值为 False,则不滚动窗口。默认值为 False。技巧 3 获得指定行、列中的最后一个非空单元格使用 VBA 对工作表进行操作时,经常需要定位到指定行或列中最后一个非空单元格,VBA 常用技巧代码解析 yuanzhuping14此时可以使用 Range 对象的 End 属性,在取得单元格对象后便能获得该单元格的相关属性,如单元格地址、行列号、数值等,如下面的代码所示。#001 Sub LastRow()#002 Dim rng As Range#003 Set rng = She

33、et1.Range(“A65536“).End(xlUp)#004 MsgBox “A 列中最后一个非空单元格是“ & rng.Address(0, 0) _#005 & “,行号“ & rng.Row & “,数值“ & rng.Value#006 Set rng = Nothing#007 End Sub代码解析:LastRow 过程使用消息框显示工作表中 A 列最后非空单元格的地址、行号和数值。End 属性返回一个 Range 对象,该对象代表包含源区域的区域尾端的单元格。等同于按键、 或 ,语法如下:expression.End(Direction)参数 expression 是必需的

34、,一个有效的对象。参数 Direction 是可选的,所要移动的方向,可以为 表格 3-1 所示的 XlDirection 常量之一。常量 值 描述xlDown -4121 向下xlToRight -4161 向右xlToLeft -4159 向左xlUp -4162 向上表格 3-1 XlDirection 常量Range 对象的 End 属性返回的是一个 Range 对象,因此可以直接使用该对象的属性和方法。运行 LastRow 过程结果如 图 3-1 所示。VBA 常用技巧代码解析 yuanzhuping15图 3-1 获得 A 列最后一个非空单元格通过修改相应的参数,能够获得指定行中最

35、后一个非空单元格,如下面的代码所示。#001 Sub LastColumn()#002 Dim rng As Range#003 Set rng = Sheet1.Range(“IV1“).End(xlToLeft)#004 MsgBox “第一行中最后一个非空单元格是“ & rng.Address(0, 0) _#005 & “,列号“ & rng.Column & “,数值“ & rng.Value#006 Set rng = Nothing#007 End Sub代码解析:LastColumn 过程使用消息框显示工作表中第一行最后一个非空单元格的地址、列号和数值,如 图 3-2 所示。图

36、 3-2 获得第一行最后一个非空单元格VBA 常用技巧代码解析 yuanzhuping16技巧 4 定位单元格在 Excel 中使用定位对话框可以选中工作表中特定的单元格区域,而在 VBA 中则使用SpecialCells 方法,如下面的代码所示。#001 Sub SpecialAddress()#002 Dim rng As Range#003 Set rng = Sheet1.UsedRange.SpecialCells(xlCellTypeFormulas)#004 rng.Select#005 MsgBox “工作表中有公式的单元格为: “ & rng.Address#006 Set

37、rng = Nothing#007 End Sub代码解析:SpecialAddress 过程使用 SpecialCells 方法选中工作表中有公式的单元格,并用消息框显示其地址。SpecialCells 方法返回一个 Range 对象,该对象代表与指定类型及值相匹配的所有单元格,语法如下:expression.SpecialCells(Type, Value)参数 expression 是必需的,返回一个有效的对象。参数 Type 是必需的,要包含的单元格,可为 表格 4-1 所列的 XlCellType 常量之一。常量 值 描述xlCellTypeAllFormatConditions -

38、4172 任意格式单元格xlCellTypeAllValidation -4174 含有验证条件的单元格xlCellTypeBlanks 4 空单元格xlCellTypeComments -4144 含有注释的单元格xlCellTypeConstants 2 含有常量的单元格xlCellTypeFormulas -4123 含有公式的单元格xlCellTypeLastCell 11 使用区域中最后的单元格xlCellTypeSameFormatConditions -4173 含有相同格式的单元格xlCellTypeSameValidation -4175 含有相同验证条件的单元格xlCell

39、TypeVisible 12 所有可见单元格表格 4-1 XlCellType 常量第 3 行代码将 SpecialCells 方法的 Type 参数设置为 xlCellTypeFormulas,返回的是VBA 常用技巧代码解析 yuanzhuping17含有公式的单元格,通过修改相应的参数可以返回不同的单元格。参数 Value 是可选的,如果 Type 参数为 xlCellTypeConstants 或xlCellTypeFormulas, 此参数可用于确定结果中应包含哪几类单元格。将某几个值相加可使此方法返回多种类型的单元格。如果省略将选定所有常量或公式,可为 表格 4-2 所列的 XlS

40、pecialCellsValue 常量之一。常量 值 描述xlErrors 16 错误xlLogical 4 逻辑值xlNumbers 1 数字xlTextValues 2 文本表格 4-2 XlSpecialCellsValue 常量第 5 行代码使用消息框显示工作表中含有公式单元格的地址。SpecialCells 方法返回的是 Range 对象,因此可以直接使用该对象的属性和方法。运行 SpecialAddress 过程结果如 图 4-1 所示。图 4-1 SpecialCells 方法技巧 5 查找单元格5-1 使用 Find 方法在 Excel 中使用查找对话框可以查找工作表中特定内容

41、的单元格,而在 VBA 中则使用Find 方法,如下面的代码所示。#001 Sub RngFind()VBA 常用技巧代码解析 yuanzhuping18#002 Dim StrFind As String#003 Dim Rng As Range#004 StrFind = InputBox(“请输入要查找的值:“)#005 If Trim(StrFind) “ Then#007 With Sheet1.Range(“A:A“)#008 Set Rng = .Find(What:=StrFind, _#009 After:=.Cells(.Cells.Count), _#010 LookIn

42、:=xlValues, _#011 LookAt:=xlWhole, _#012 SearchOrder:=xlByRows, _#013 SearchDirection:=xlNext, _#014 MatchCase:=False)#015 If Not Rng Is Nothing ThenVBA 常用技巧代码解析 yuanzhuping20#016 FindAddress = Rng.Address#017 Do#018 Rng.Interior.ColorIndex = 6#019 Set Rng = .FindNext(Rng)#020 Loop While Not Rng Is

43、Nothing And Rng.Address “ Then#004 Application.SendKeys “F2“#005 End If#006 End If#007 End Sub代码解析:工作表的 SelectionChange 事件过程,当选择工作表 C 列有数据单元格时自动进入编辑状态。第 2、3 行代码设置 SelectionChange 事件的触发条件,利用 Target 参数的 Column属性和 Count 属性将事件的触发条件限制在 C 列并且只有在选择一个单元格时才发生。第 4 行代码使用 SendKeys 方法发送一个 F2 键到应用程序,等同于选择单元格后按F2

44、键,使单元格进入编辑状态。关于 SendKeys 方法请参阅技巧 12-4。技巧 10 禁用单元格拖放功能在工作表中可以拖放单元格右下角的小十字对单元格内容进行复制等操作,如果不希望用户进行此操作可以禁用单元格拖放功能,如下面的代码所示。#001 Private Sub Worksheet_SelectionChange(ByVal Target As Range)VBA 常用技巧代码解析 yuanzhuping29#002 If Not Application.Intersect(Target, Range(“A1:A15“) Is Nothing Then#003 Application.

45、CellDragAndDrop = False#004 Else#005 Application.CellDragAndDrop = True#006 End If#007 End Sub代码解析:工作表的 SelectionChange 事件过程,在指定的单元格区域禁用单元格的拖放功能。CellDragAndDrop 属性设置单元格的拖放功能,如果允许使用单元格拖放功能,则该值为 True。为了不影响其他工作表,应在工作表的 Deactivate 事件中恢复单元格的拖放功能,如下面的代码所示。#001 Private Sub Worksheet_Deactivate()#002 Applic

46、ation.CellDragAndDrop = True#003 End Sub代码解析:工作表的 Deactivate 事件过程,恢复单元格的拖放功能。工作表的 Deactivate 事件当工作表从活动状态转为非活动状态时产生,语法如下:Private Sub object_Deactivate()参数 object 代表 Worksheet 对象。当选择工作表“Sheet1”的 A1:A15 单元格时将禁用单元格的拖放功能,如 图 10-1所示。图 10-1 禁用单元格的拖放功能VBA 常用技巧代码解析 yuanzhuping30技巧 11 单元格格式操作11-1 单元格字体格式设置在 V

47、BA 中可以对单元格的字体格式进行各种设置,如下面的代码所示。#001 Public Sub RngFont()#002 With Range(“A1“).Font#003 .Name = “华文彩云“#004 .FontStyle = “Bold“#005 .Size = 18#006 .ColorIndex = 3#007 .Underline = 2#008 End With#009 End Sub代码解析:RngFont 过程对单元格 A1 的字体格式进行设置。其中第 3 行代码设置字体为“华文彩云” ,应用于 Font 对象的 Name 属性返回或设置对象的名称。第 4 行代码设置字体为加粗,FontStyle 属性返回或设置字体样式。设置为“Bold” 加粗字体,设置为“Italic”倾斜字体,也可以设置成“Bold Italic”。第 5 行代码设置字体的大小为 18 磅,Size 属性返回或设置字体大小。第 6 行代码设置字体的颜色为红色,应用于 Font 对象的 ColorIndex 属性返回或设置字体的颜色,该颜色可指定为当前调色板中颜色的编号,如 图 11-1 所示。图 11-1 调色板中颜色的编号第 7 行代码设置字体为单下划线类型,Underline 属性返回或设置应用于字体的下划

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 实用文档 > 往来文书

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报