VBA中方法传参
将变量做为参数传递给方法
Sub Test()
Dim a As Integer
a =
Add a
Debug.Print a '引用传递,a的值发生了变化,输出101
End Sub Function Add(a As Integer)
a = a +
End Function
结论:VB传参时默认是引用传递byRef。
使用byVal关键字强制形参为值传递
Sub Test()
Dim a As Integer
a =
Add a
Debug.Print a '值传递,a的值没有变化,输出1
End Sub Function Add(ByVal a As Integer)
a = a +
End Function
调用一个有返回值函数
Sub Test()
Dim a As Integer
a =
Dim sum As Integer
sum = Add(a)
Debug.Print sum '引用传递,输出101
End Sub Function Add(a As Integer) As Integer
Add = a +
End Function
认识“()”
Sub Test()
Dim a As Integer
a =
Add (a)
Debug.Print a 'a的值没有变化,输出1
End Sub Function Add(ByRef a As Integer) As Integer
a = a +
End Function
解释:
1、Add只有一个参数,并且是“过程式调用”方式的时候,VBE“偷偷”把代码自动改为了Add (a)。注意,Add和(a)之间有个“空格”
2、()在此有完全不同的意义,可以理解它是一个运算符。(a)生成了一个临时变量,a的一个副本,然后将这个临时变量(a)传递给Add
3、a本身并没有传递给Add方法,所以a的值并不会有任何变化。
将一个数组做为参数传递给方法:
Sub Test()
Dim arr() As Integer
arr() =
arr() =
arr() = showArray arr
Dim i As Integer
For i = To
Debug.Print arr(i) '输出101,102,103
Next i
End Sub Function showArray(arr() As Integer)
Dim i As Integer
For i = To
arr(i) = arr(i) +
Next i
End Function
和()有关的一个常见错误和保留问题:
Sub Test()
Dim arr() As Integer
arr() =
arr() =
arr() = showArray (arr) '编译时报错:缺少数组或用户定义类型
Dim i As Integer
For i = To
Debug.Print arr(i)
Next i
End Sub Function showArray(arr() As Integer)
Dim i As Integer
For i = To
arr(i) = arr(i) +
Next i
End Function
编译报错:缺少数组或用户定义类型,除了()生成了一个临时变量之外,与此有关的原因暂不明。。
如果形参是arr而不是arr()
Sub Test()
Dim arr() As Integer
arr() =
arr() =
arr() = showArray (arr)
Dim i As Integer
For i = To
Debug.Print arr(i) '输出1,2,3
Next i
End Sub Function showArray(arr)
Dim sum As Integer, i As Integer
For i = To
arr(i) = arr(i) +
Next i
End Function
VBA中方法传参的更多相关文章
- MyBatis dao层 方法传参
MyBatis dao层 方法传参有三种方法. 1. 以下标的方法获取参数. <update id="insertSuccessKilled"> INSER ...
- 再谈Java方法传参那些事
把一个变量带进一个方法,该方法执行结束后,它的值有时会改变,有时不会改变.一开始会觉得--“好神奇呀”.当我们了解java内存分析的知识后,一切都是那么简单明了了--“哦,这么回事呀”.但是今天的上机 ...
- 在Java中动态传参调用Python脚本
最近,又接触到一个奇葩的接口,基于老板不断催促赶时间的情况下,在重写java接口和复用已有的python脚本的两条路中选择了后者,但是其实后者并没有好很多,因为我是一个对python的认识仅限于其名称 ...
- 对象引用 方法传参 值传递 引用传递 易错点 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- java的方法传参,最容易混淆的问题!!!
参数传递 参数传递,可以理解当我们要调用一个方法时,我们会把指定的数值,传递给方法中的参数,这样方法中的参数就拥有了这个指定的值,可以使用该值,在方法中运算了.这种传递方式,我们称为参数传递. 在这里 ...
- vue 使用 axios 时 post 请求方法传参无法发送至后台
axios 时 post 请求方法传参无法发送至后台报错如下 Response to preflight request doesn't pass access control check: No ' ...
- EasyUI queryParams属性 在请求远程数据同时给action方法传参
http://www.cnblogs.com/iack/p/3530500.html?utm_source=tuicool EasyUI queryParams属性 在请求远程数据同时给action方 ...
- javascript 字符串方法传参
javascript 字符串方法传参由于嵌套的单引号,双引号过多.有点混乱.. 正确方法如下: ' <td align="left"><input type= ...
- Python中的传参是传值还是传址?
传值:在C++中,传值就是把一个参数的值给这个函数,其中的更改不会影响原来的值. 传址:即传引用,直接把这个参数的内存地址传递进去,直接去这个内存地址上进行修改. 但是这些在Python中都没有,Py ...
随机推荐
- DNS 中的协议字段详细定义
DNS中的协议字段定义 Table of Contents 1 概述 2 DNS Classes 3 DNS OpCodes 4 DNS RCODEs 5 DNS Label Types 6 DNS资 ...
- js字符串和正则表达式中的match、replace、exec等函数详解
正则并不是经常使用,而正则和字符串之间的函数关系又错综复杂,谁是谁的函数,又是怎么样的一种结果,往往我们是看一遍忘一遍,对此我是头疼不已,感觉自己是个笨蛋^_^. 为了以后不再查文档,特此把常用的函数 ...
- 使用SQL语句查询日期(当月天数,当月第一天,当月最后一天,本年最后一天,当月第一个星期) 日期转字符串
取某月天数:,) --当月天数 ,DATEADD(m, DATEDIFF(m,,getdate())+,))) ---当月第一天 ,getdate()) ---当月最后一天 ,dateadd(m,,d ...
- java 文件上传
java 上传文件 如果不依赖框架的话 要利用 Apache 中几个jar文件来处理 1. 给表单设置enctype属性,其值为 "multipart/form-data" ...
- ThinkPHP的异步搜索
因为公司的后台框架采用了Ajax异步处理,控制器的方法,有时候会被多个连接所重复调用,虽然这个很符合OOP开发思想,但是为了维护这个框架,付出的汗水也是很大的. 说下正题了: 我在后台的搜索框调用了优 ...
- [转]Android SDK更新 Connection to http://dl-ssl.google.com refused 解决方法
问题描述 使用SDK Manager更新时出现问题Failed to fetch URL https://dl-ssl.google.com/android/repository/repository ...
- Linux命令的返回码列表
转自:http://blog.chinaunix.net/uid-10347480-id-3263127.html 在 Linux 下,不管你是启动一个桌面程序也好,还是在控制台下运行命令,所有的程序 ...
- QFile QDataStream QTextStream
#include <QCoreApplication> #include <QMap> #include <QFile> #include <QDir> ...
- stack栈
栈(statck)这种数据结构在计算机中是相当出名的.栈中的数据是先进后出的(First In Last Out, FILO).栈只有一个出口,允许新增元素(只能在栈顶上增加).移出元素(只能移出栈顶 ...
- C++内存泄露之野指针
写出本文仅仅是处于备忘的目的. 最近为现在做的软件添加了一个内存回收机制(以前处于某种内存只申请不释放,这并不等于内存泄露,因为我们知道这些内存块在内存中的位置)-- 在某一块内存不使用的时候将其释放 ...