不正常的Excel VBA函数参数处理现象
发布时间:2022-03-07 08:34:56
无意中发现一个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
在函数调用时应该尽量避免第二种写法。


猜你喜欢
- 微软自带着一个微软拼音输入法,很多用户都不太使用,基本都是用的国产输入法。Win10系统默认输入法怎样设置?本文将提供Win10输入法常用设
- excel2007如何加密?很多网友都会给自己制作的表格文档进行加密,一来防止隐私泄露,二来也可以防止文档数据被随意修改。其中,许多网友都在
- 我们经常会用到PPT来做一些演示文稿,今天教大家如何用PPT组合多个图形,一起来看看如何具体操作吧,这个小技巧可是非常简单哦!首先我们点击顶
- 现在很多文员在平时办公的时候,或者是大学生写论文的时候,会写很多段落文字,在写这些文字的时候一般会在段落前缩进,很多时候我们都是直接用空格键
- Excel中的行和列具体该如何对调呢?对于新手来说还是有一定难度,怎么办?接下来是小编为大家带来的excel表格行和列对调的教程,供大家参考
- AIrPods已迅速成长为Apple用户收听音乐,播客和电影的最受欢迎选择之一。那么我们该如何检查AIrPods电池寿命呢?您可以通过以下几
- 酷狗音乐是一款广受欢迎的音乐播放软件,有很多小伙伴想不管身在何处都可以进行歌曲的收听,但是不知道怎么操作,那么就跟我一起往下看看吧。方法步骤
- 如果我们使用的是安装了win101903版本系统的电脑,对于在更新了系统补丁KB4551762之后出现错误代码0x80073712的情况,有
- 阿里云盘是一款安全、速度快的个人网盘软件,大家可以在这里存储、管理你的重要文档资料,同时下载不限速,而且还易于分享。近期有Win11用户遇到
- 据有关消息报道,微软Win10 RS4 17127预览版正式更新发布ISO镜像,本次更新主要包含了两大功能:为微软小娜设计了新的新简介页、将
- Win10如何禁止文件名按数字大小排列?禁止Win10文件名按数字大小排列的方法大家知道吗,感兴趣的小伙伴跟随小编一起学习具体的方法吧。两种
- vlookup 在实际工作当中运用的更高一级的查询为多条件查询,查询方式与vlookup函数进阶1当中的,vlookup+if函数使用类似。
- 打开WPS表格,点击左上角的WPS表格,弹出一个下拉菜单,选择菜单中的第一项【文件】字样的按钮。点击【文件】字样按钮以后,弹出一个新的下拉菜
- 电脑不能上网怎么办?电脑网卡灯不亮了该如何解决呢?有用户在使用电脑时突然遇到断网问题,并且发现网口的灯不亮了,这是怎么回事?本文就给大家介绍
- 最近有几个网友跟小编反馈,自己的电脑开机之后CPU散热器风扇转一下就停然后再转,一直重复开不了机,关机重启也没解决不了,非常令人头疼。这到底
- 在使用word过程中,有时候会遇到文档内容重要,不希望有人修改,这样就需要锁定word内容限制编辑加以保护文档。本文将详细讲述如何给word
- win10系统是一款应用广泛的系统,在各种检测之下win10系统都能很好的发挥出性能来进行持续运行,但是最近有很多的朋友反应说是什么也每天征
- 在WPS文本排版过程中,经常会遇到改变纸张尺寸的问题。默认情况下,纸张尺寸为A4。在这种情况下,它被改变为A3,也就是说,纸张尺寸将从A4调
- Excel是我们大家常用的办公软件,笔者在使用过程中总结出了一些经验,现在写出来供大家参考。1、不使用方向键也可上下左右移动所选定单元格因工
- Win10 20H2值得更新吗?Win10系统20H2版本怎么样?有很多朋友目前用的还是1903版本,感觉也挺稳定的,没有什么不好的地方,但