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 = 25Evaluate("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函数的功能,其实借助VBA的Evaluate函数我们同样可以很方便地在VBA中使用Datedif函数: 一、求单元格时间间隔: A1单元格内容为:2005-9-8,B3单元格内容为: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-8,TextBox2单元格内容为: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"")") & "年"
|