加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

excel vba 学习笔记 Evaluate

(2012-10-03 22:21:42)
标签:

date

excel

高级教程

vba

杂谈

教育

Evaluate

很早以前,就认识了你,只是,不大在意你的存在与意义。

近来常用了你,才知道你确实帮了很多忙。

例如,在引用一些函数时,用VBA来找替代的公式或者函数,非常难,

那直接运用你就行的了。

其实,还是先来看下你的原来面貌吧。

Evaluate 方法

请参阅 应用于 示例 特性

将一个 Microsoft Excel 名称转换为一个对象或者一个值。

expression.Evaluate(Name)

expression   对于 Application 对象可选,对于 Chart 对象,DialogSheet 对象,和 Worksheet 对象必需。该表达式返回“应用于”列表中的对象之一。

Name   String 类型,必需。对象名使用 Microsoft Excel 的命名约定。

说明

下列几类 Microsoft Excel 名称可以使用此方法:

  • A1-样式引用。可以引用任何以 A1-样式符号表示的单个单元格。所有引用都是绝对引用。
  • 单元格区域。可在区域引用中使用区域、交集和联合运算符(分别为冒号、空格和逗号)。
  • 已定义的名称。可用宏语言指定任意名称。
  • 外部引用。可以使用“!”操作符引用另一工作簿上的单元格或已定义的名称。例如,Evaluate("[BOOK1.XLS]Sheet1!A1")

注意   使用方括号(例如,"[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 的优点在于参数是字符串,这样您既可以在代码中构造该字符串,也可以使用 Visual Basic 变量。

示例

本示例将工作表 Sheet1 上 A1 单元格的字体设置为加粗。

Worksheets("Sheet1").Activate
boldCell = "A1"
Application.Evaluate(boldCell).Font.Bold = True
 
再看下几个实例“:
A1单元格内容为:2005-9-8,B3单元格内容为:2007-4-5,要求出它们间隔的年、月、日,在工作表中可以使用Datedif函数,而且结果非常精确,但在VBA中却比较麻烦。因为Datedif函数不能直接在VBA中使用,而使用VBA提供的函数却不能得到精确的计算结果。于是很多人在写代码时就自编一个函数来实现Datedif函数的功能,其实借助VBAEvaluate函数我们同样可以很方便地在VBA中使用Datedif函数:
一、求单元格时间间隔:
A1单元格内容为:2005-9-8B3单元格内容为:2007-4-5
Sub test1()
    MsgBox "间隔" & Application.Evaluate("=Datedif(a1,b3,""y"")") & ""
    MsgBox "间隔" & Application.Evaluate("=Datedif(a1,b3,""m"")") & ""
    MsgBox "间隔" & Application.Evaluate("=Datedif(a1,b3,""d"")") & ""
End Sub
二、求两个TextBox的时间间隔:
TextBox1单元格内容为:2005-9-8TextBox2单元格内容为:2007-4-5
       Sub test2()
           MsgBox "=Datedif(""" & TextBox1.Text & """,""" & TextBox2.Text & """,""y"")"
          MsgBox "间隔" & Application.Evaluate("=Datedif(""" & TextBox1.Text & """,""" & TextBox2.Text & """,""y"")") & ""
    End Sub
三、求两个变量的时间间隔:
       Sub test3()
         Dim time1, time2
         time1 = "2005-9-8"
         time2 = "2007-4-7"
        MsgBox "间隔" & Application.Evaluate("=Datedif(""" & time1 & """,""" & time2 & """,""y"")") & ""
 
 

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有