电脑教程
位置:首页>> 电脑教程>> office教程>> 不正常的Excel VBA函数参数处理现象

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

  发布时间:2022-03-07 08:34:56 

标签:函数,是一个,种方法,输出,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

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

0
投稿

猜你喜欢

  • 步骤一:按住“Alt+Ctrl+Shift+S”,会出来“样式”对话框。步骤二:点击左下角“新建样式”按钮,弹出“根据格式新建样式列表”对话
  • 有些朋友常常需要在Word 2007文档内容中加上一条横跨整页的分隔线,不过总是找不可快速的方法来实现。通常,在Word 2007中加入横线
  • 问题:如何取消编号和文字之间的空格? 解答:利用Word制表位就可以搞定。 具体操作如下: 例如下图编号第1和 第2离“回复”文字的距离太远
  • 新建一张Word文档,单击Office图标——另存为——Word模板,弹出“另存为”对话框,选择好保存路径,并命名为“贺卡”,单击确定。
  • 1、打开word文档,点击页面布局功能区;2、选择页边距下方的自定义页边距;3、当选择页边距为对称页边距时,原来的左右页边距就变为内侧和外侧
  • 如果我们在Excel中经常执行某个VBA代码,可以在Excel 2003工具栏中添加一个宏命令按钮,以方便操作。例如工作簿中有很多工作表,而
  • 我们常常看到这样的工程倒计时牌:    工程倒计时牌这多么鼓舞人心!她如擂起阵阵战鼓,激励人们奋进!能否在EXCEL中制
  • Win10注册表编辑器在哪里怎么打开?注册表编辑器可以对系统以及软件进行相关的信息进行修改设置,但是一般的用户不清楚注册表编辑器在哪里进行打
  • excel中数据按照类别排序怎么设置1、如下图是一张购物清单,从中可以看出该清单里有饮料、家禽、海鲜等不同属性的东西…2、为了便于查找,我们
  • 函数说明N函数的主要作用是返回转化为数值后的值。函数语法N(value)N(要转化的值)参数说明Value:为要转化的值。函数 N 可以转化
  • 在word2007文档中如何批量删除英文字母?很多朋友并不是很清楚,所以下面小编就为大家详细介绍一下,不会的朋友可以参考本文,希望能对大家有
  • 有时excel过短或者过长,我们想把这些内容占满一张a4纸张,过短的我们可以通过调整单元格宽、高及文字大小,过长的可以通过缩放等方法,下面给
  • 许多用户在使用电脑地时候,都发现了我们的账户其实是有头像的,不过没有设置的话基本都是灰色的。那么我们要怎么设置个人电脑账户的头像呢?下面小编
  • 要统一多张图片的尺寸,必须一起选中图片,要一起选中图片,必须把图片设置成四周环绕型。(word中在嵌入型的情况下无法一起选中图片)第一步:把
  • 在我们使用excel制作表格的时候,最常用到的就是拆分和合并单元格了,具体该如何操作呢?下面随小编一起看看吧excel合并单元格的步骤打开e
  • 如果你使用WPS 2009编辑文档,当收到一份带有水印的Word文档,并且需要去除水印时,那么该如何操作呢?其实方法很简单。依次单击“视图→
  • Excel默认功能区是没有VBA编辑器的,现在我们需要打开它,那么Excel 2010怎么调用VBA?下面小编就为大家介绍excel调用vb
  • Word2016怎么快速删除表格保留内容?word表格中有内容,但是想要删除表格,但是保持内容不变,该怎么操作呢?下面我们就来看看详细的教程
  • 要获取有关某个函数的详细信息,请在第一列中单击其名称。注意: 版本标记指示引入函数的Excel版本。这些函数在更早的版本中不可用。
  • 有时候一个word文档中包含有很多页,为了节约纸张,需要在word中把多页的文本内容缩小后打印在一张纸上,word 2016中在同一纸张上打
手机版 电脑教程 asp之家 www.aspxhome.com