当前位置:萝卜系统下载站 > 办公软件教程 > 详细页面

不正常的Excel VBA函数参数处理现象

不正常的Excel VBA函数参数处理现象

更新时间:2024-01-02 文章作者:未知 信息来源:网络 阅读次数:

Microsoft Excel是Microsoft为使用Windows和Apple Macintosh操作系统的电脑编写的一款电子表格软件。直观的界面、出色的计算功能和图表工具,再加上成功的市场营销,使Excel成为最流行的个人计算机数据处理软件。

无意中发现一个Excel VBA对待参数的一个"不正常"现象。这种处理方式可能无意中导致程序结果错误,而且你很难发现你的错误所在:

Sub twotimes(t As Double)    t = 2 * tEnd Sub Sub test()    Dim t As Double    t = 123    twotimes t    MsgBox t            ' 输出 246    t = 123    twotimes (t)    MsgBox t            ' 输出 123     t = 123    Call twotimes(t)    MsgBox t            ' 输出 246End Sub

test函数对于twotimes有三种调用方法,分别为 twotimes t,twotimes (t)和call twotimes(t)。它们是一样的吗?

运行test之后,第一种方法和第三种方法都输出了246。这个没有问题,因为VBA的参数默认传引用,twotimes函数会修改t的值。但第二种方法输出了123。我猜测是因为实际调用了twotimes((t)),从而把(t)传引用进入了twotimes的函数体,这个括号在运行时并没有被编译器扔掉,(t)是一个临时变量,和t被当作不同的变量。

事实上,空格后面的括号里的变量会被执行,然后返回默认参数。下面是一个更精妙的例子,客官们可以猜测发生什么:

Sub test()    Dim myCollection As Collection    Dim myObject As Object        myCollection.Add (myObject)    myCollection.Add myObjectEnd Sub

在函数调用时应该尽量避免第二种写法。


Excel整体界面趋于平面化,显得清新简洁。流畅的动画和平滑的过渡,带来不同以往的使用体验。

温馨提示:喜欢本站的话,请收藏一下本站!

本类教程下载

系统下载排行

网站地图xml | 网站地图html