例解Excel VBA

发布时间 : 星期六 文章例解Excel VBA更新完毕开始阅读

图12-6 具有公式的工作表 单击―删除所有公式‖按钮,将打开如图12-7所示的对话框,询问用户是否删除提示 工作簿中的所有公式,单击―是‖按钮工作簿中各工作表中的公式都将被删除,如图12-8所示选中单元格I16,编辑栏中可以看到显示的是具体的值,公式已被删除。 图12-7 确认操作 图12-8 删除公式的工作表 2.关键技术

本例代码与上例类似,不同的是本例将对所有打开工作簿进行处理,对每个工作簿

的每张工作表进行循环,将具有公式的单元格转换为具体的数值。 3.编写代码

―删除所有公式‖按钮的VBA代码如下: Sub 删除所有公式() Dim wb1 As Workbook, ws1 As Worksheet Dim rng As Range, rng1 As Range For Each wb1 In Workbooks With wb1 If MsgBox(\是否删除工作簿―\中的所有公式?\ vbQuestion + vbYesNo) = vbYes Then For Each ws1 In .Worksheets On Error Resume Next

Set rng1 = ws1.UsedRange.SpecialCells(xlCellTypeFormulas) '获取公式单元格区域引用

For Each rng In rng1

rng.Value = rng.Value '将公式转换成数值 Next Next

End If End With Next End Sub

例259 用VBA表示数组公式

打开本例工作簿如图12-9所示。在Excel中,可以通过定义数组公式计算销售总金额。但是如果销售日报表中销售商品的数量不确定(占用表格的行是动态的),使用固定的数组公式就不太方便。

1.案例说明

图12-9 销售日报表

本例使用VBA动态定义数组公式,在图12-9所示工作表中输入数据,然后单击―汇 总金额‖按钮,在单元格F5中将根据录入数据的行数自动生成数组公式,如图12-10所示,在编辑栏可看到数组公式为: {=SUM(B4:B9*C4:C9)} 2.关键技术

使用Range对象的FormulaArray属性,可获取或设置区域的数组公式。如果指定

区域不包含数组公式,则该属性返回null。 图12-10 生成数组公式 3.编写代码

―汇总金额‖按钮的VBA代码如下: Sub 汇总金额() Dim r As Long

r = ActiveSheet.Range(\

Range(\

End Sub

完全手册Excel VBA典型实例大全:通过368个例子掌握

12.2 数据查询

http://book.csdn.net/ 2008-7-31 15:35:00

图书导读 当前章节:12.2 数据查询 ·3.3 循环结构 ·3.4 使用数组 ·12.1 处理公式 ·12.3 数据排序 ·12.4 数据筛选 12.2 数据查询

在Excel中,数据查询是最常用的操作。在―开始‖选项卡的―编辑‖组中单击―查找和 选择‖按钮,从下拉的菜单按钮中选择相应的命令即可进行查询操作。在VBE中,可使用Find方法进行查询相关的操作,本节实例演示查询数据的VBA代码。

例260 查找指定的值

打开本例工作簿如图12-11所示,单击左上角的―查找‖按钮,弹出―查找‖对话框如图12-12所示,在该对话框中输入要查找的值(如本例中输入200),单击―确定‖按钮,查找的结果显示在如图12-13所示的对话框中,同时工作表中对应单元格也加亮显示,如图12-14所示。

图12-11 查找工作表 图12-12 输入查找值

1.案例说明

图12-13 查找结果 图12-14 加亮显

2.关键技术

本例的查找使用了Range对象的两个方法:Find方法和FindNext方法。 (1)Find方法 使用该方法可以在区域中查找特定信息。其语法格式如下:

表达式.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection,

MatchCase, MatchByte, SearchFormat)

该方法的参数很多,其中What参数是必须指定的,其余参数都可省略。各参数的

含义如下: — What:要搜索的数据。可为字符串或任意Excel数据类型。

— After:表示搜索过程将从其之后开始进行的单元格。此单元格对应于从用户界面搜索时的活动单元格的位置。After必须是区域中的单个单元格。要记住搜

索是从该单元格之后开始的;直到此方法绕回到此单元格时,才对其进行搜索。如果不指定该参数,搜索将从区域的左上角的单元格之后开始。 — LookIn:信息类型。

— LookAt:设置匹配文本的方式。可为常量xlWhole(匹配全部搜索文本)或

xlPart(匹配任一部分搜索文本)。

— SearchOrder:指定搜索区域的次序。可为常量xlByRows(按行)或

xlByColumns(按列)搜索。 — SearchDirection:搜索的方向。可为常量xlNext(在区域中搜索下一匹配值)

或xlPrevious(在区域中搜索上一匹配值)。 — MatchCase :如果为True,则搜索区分大小写。默认值为False。

— MatchByte:只在已经选择或安装了双字节语言支持时适用。如果为True, 则双字节字符只与双字节字符匹配。如果为False,则双字节字符可与其对等的单字节字符匹配。 — SearchFormat:搜索的格式。 使用该方法将返回一个Range对象,它代表第一个在其中找到该信息的单元格。如

果未发现匹配项,则返回Nothing。Find方法不影响选定区域或当前活动的单元格。 —

每次使用此方法后,参数LookIn、LookAt、SearchOrder和MatchByte的设置都将 被保存。如果下次调用此方法时不指定这些参数的值,就使用保存的值。设置这些参数将更改―查找‖对话框中的设置,如果省略这些参数,更改―查找‖对话框中的

联系合同范文客服:xxxxx#qq.com(#替换为@)