分享

Excel VBA解读(77):Evaluate方法

 L罗乐 2017-09-14

 

Worksheet对象的Evaluate方法,有时会非常有用。

但是在这里,只是简单地介绍该方法。在专题文章中,我会对该方法进行详细剖析。

 

Evaluate方法将Excel名称转换成对象或值。

其语法为:

工作表对象.Evaluate(Name)

说明:

  • 参数Name,必需,使用Excel命名约定的对象的名称。

  • 可以使用下列类型的名称:

  • A1样式引用,引用被认为是绝对引用。

  • 单元格区域。可以使用冒号、空格和逗号操作符所构成的单元格区域、交叉区域和联合区域的引用。

  • 定义的名称。

  • 外部引用。可以使用!操作符来引用另一工作簿中的单元格或者命名区域。

  • 图表对象。可以指定任何图表对象名,例如“图例”、“绘图区”或者“系列1”,来访问该对象的属性和方法。

  • 当参数指定为字符串时,使用方括号([ ])与调用Evaluate方法相同。然而,如果引用中含有变量,就必须使用Evaluate方法。

 

示例1:输入值并设置单元格格式

如下图1所示的工作表,将单元格区域A1:A7命名为“Data”,使用含有Evaluate方法的代码在该区域输入数据并设置为加粗。

 1

代码如下:

Sub testEvaluate()

    Dim rng As Range

    Dim i As Integer

   

    i = 1

   

    For Each rng InEvaluate('Data')

        rng.Value = i

        i = i 1

    Next rng

   

   Evaluate('Data').Font.Bold = True

End Sub

可以看出,Evaluate(“Data”)等价于Range(“A1:A7”)

可以将上述代码中的Evaluate('Data')修改为[Data],效果相同,但更简洁。

Sub testEvaluate()

    Dim rng As Range

    Dim i As Integer

   

    i = 1

   

    For Each rng In [Data]

        rng.Value = i

        i = i 1

    Next rng

   

    [Data].Font.Bold = True

End Sub

 

示例2:获取单元格的值

下面的代码获取当前工作表单元格A1中的值:

Sub GetValueWithEvaluate()

    MsgBoxEvaluate('A1').Value

End Sub

运行后的结果如图2

 2

上面代码中的Evaluate('A1')可以修改为[A1]

 

示例3:获取另一工作簿中单元格的值

下面的代码将工作表Book2的工作表Sheet1中单元格区域A1:A5的值输入到当前工作簿的工作表Sheet3中。

Sub GetValueFromAnotherWB()

    Sheet3.[A1:A5] =Evaluate('[Book2.xlsx]Sheet1!A1:A5').Value

End Sub

或者:

Sub GetValueFromAnotherWB()

    Sheet3.[A1:A5] =[[Book2.xlsx]Sheet1!A1:A5].Value

End Sub

 

通过以上简单的示例可以发现,这里使用的Evaluate方法和直接使用Range对象引用单元格非常相似。


本文只是简单介绍一下Evaluate方法,让你对其有所了解。

然而,为什么还要使用Evaluate方法呢?我会在专题文章中详解。




 本文为原创文章,转载请联系我(xhdsxfjy@163.com)或者注明出处。

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多