- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【精选】在VBA中使用Excel工作表公式
在VBA 中使用Excel 工作表公式
在VBA 中可以利用Excel 工作表函数的强大功能,将VBA 和Excel 公式与函数联合,使得应
用程序更为强大和灵活。
使用WorksheetFunction 对象
WorksheetFunction 对象的成员就是Excel 内置函数,因此,利用该对象可以直接在VBA 中使
用这些函数。
例如,求单元格区域 A1:A5 的数值之和,假如将该区域命名为“myRange”,则可以在VBA
中使用下列代码:
Application.WorksheetFunction.Sum(Range(myRange))
Application.WorksheetFunction.Sum(Range(A1:A5))
注意,在VBA 中当输入WorksheetFunction 后再输入一个句点时,就会显示所有的函数列表,
如下图1 所示。
图1:显示VBA 可用工作表函数列表
Evaluate 方法
使用Worksheet 对象或Application 对象的Evaluate 函数。该函数接受字符串参数,返回引用
的公式的值(字符串为公式)或者引用的单元格区域(字符串代表单元格或单元格区域,
A1 样式)。其语法为:
表达式.Evaluate(Name)
将Excel 名称转换为对象或值,其中:
表达式 对于Application ,表达式可选;对于Chart、DialogSheet 和Worksheet ,表达式必需。
Name 必需的字符串。满足Excel 命名规范的对象的名称,包括:
(1)A1 样式引用。可以以A1 样式的引用方式使用任意对单个单元格的引用,引用都
被考虑是绝对引用。
(2 )单元格区域。可以使用区域、交叉和联合操作符(冒号、空格和逗号)引用单元
格区域。
(3 )定义的名称。
(4 )外部引用。可以使用!操作符引用另一工作簿中的单元格或定义的名称。例如
Evaluate([BOOK1.XLS]Sheet1!A1)。
(5 )Chart 对象。可以指定任意图表对象名称,例如“图例”、“绘图区”或“系列1”,
来访问该对象的属性和方法。例如,Charts(Chart1).Evaluate(Legend).Font.Name 返回图例
中使用的字体名。
在VBA 中使用Excel 工作表公式
也可以使用方括号代替evaluate 函数,使用方括号(例如,[A1:C5])与调用带字符串参数的
Evaluate 方法是相同的。例如,下面的代码等价:
[a1].Value = 25
Evaluate(A1).Value = 25
trigVariable = [SIN(45)]
trigVariable = Evaluate(SIN(45))
Set firstCellInSheet = Workbooks(BOOK1.XLS).Sheets(4).[A1]
Set firstCellInSheet = Workbooks(BOOK1.XLS).Sheets(4).Evaluate(A1)
使用方括号的优势是代码更简短。使用Evaluate 方法的的优势是参数是字符串,因此可以在
代码中构造字符串或使用变量。
例如,下面的代码将Sheet1 中单元格A1 加粗:
Worksheets(Sheet1).Activate
boldCell = A1
Application.Evaluate(boldCell).Font.Bold = True
更简短一些,如设置当前工作表中单元格B1 为加粗:
[B1].Font.Bold = True
下面的代码返回当前工作表中单元格A1 的值:
Evaluate(A1)
下面的代码返回当前工作表中单元格区域A1:A5 的值之和:
Evaluate(SUM(A1:A5))
又例如:
图2:示例工作表
For i = 2 To 10
Debug.Print Evaluate(A i), Evaluate(COUNTIF(A1:A (i - 1) ,A i ))
Next i
将打印出A1:A10 区域内,某单元格的
文档评论(0)