ExcelVBA 之可选参数
有时候,你也许要给函数提供额外的参数,例如,你有一个计算每个人膳食的函数。然而,有时你不希望函数进行相同的计算。在参数名称前面加上关键字Optional可以指明该参数不是必须的。可选参数在必须的参数之后,列在参数清单的最后;可选参数总是Variant数据类型,这意味着你不能使用关键字As来明确可选参数的类型。在前面部分,你创建了一个计算三个数值的平均值的函数,假设,你有时只想要计算两个数的均值,你就可以将第三个参数设置为可选的。为了不破坏原来的函数MyAverage,我们来创建一个新的函数Avg,来计算两个或三个数字的均值:
Function Avg(num1, num2, Optional num3)Dim totalNums As IntegertotalNums = 3If IsMissing(num3) Thennum3 = 0totalNums = totalNums - 1End IfAvg = (num1 + num2 + num3) / totalNums
End FunctionPublic Sub Option1()
Dim c As Integer
c = Avg(5, 7)
MsgBox c
End Sub
该函数可显示两个或者三个参数的值,根据Avg调用个数不一样而定,上面代码结果为6
该函数最多可以用三个参数;参数num1和num2是必须的,而第三个参数num3是可选的。注意,可选参数以关键字Optional开头,可选参数列在参数清单的后面。因为参数num1,num2和num3的类型都没有声明,VB对待它们为Variant。函数内部,变量totalNums声明为整型,并且初始赋值为3。因为该函数必须能够处理两个或三个数字的平均值计算,有关很方便的内置函数IsMissing在检查参数的个数。如果第三个参数没有提供,函数IsMissing的值为0,同时变量totalNums的值被减去1,因此如果没有可选参数,totalNums为2。
函数IsMissing用来检测可选参数是否提供,如果第三个参数没有提供,那么该函数返回逻辑值True,如果提供了第三个参数时,则返回False。在这里,函数IsMissing是和一个做判断的语句If…Then一起使用的(参见第五章有关该语句和VBA中其它判断语句信息)。如果没有参数num3(IsMissing),那么(Then)VB将num3设置为0,并且将变量totalNums减去1(totalNums=totalNums–1)。你还能使用别的方法来运行函数Avg吗?使用你自己的方法在工作表里运行该函数,确保你使用两个和三个参数来运行该函数。
ExcelVBA 之可选参数相关推荐
- 如何定义带有可选参数的函数python_Python如何定义有可选参数的元类
问题 你想定义一个元类,允许类定义时提供可选参数,这样可以控制或配置类型的创建过程. 解决方案 在定义类的时候,Python允许我们使用 ``metaclass``关键字参数来指定特定的元类. 例如使 ...
- php laravel用的多不,php-Laravel多个可选参数不起作用
在使用带有2个可选参数的路线时, Route::get('/abc-{abc_id?}/xyz-{xyz_id?}', function($abc_id=0, $xyz_id=0) { return ...
- [读书笔记]C#学习笔记七: C#4.0中微小改动-可选参数,泛型的可变性
前言 下面就开始总结C#4.0的一些变化了, 也是这本书中最后的一点内容了, 这一部分终于要更新完了. 同时感觉再来读第二遍也有不一样的收获. 今天很嗨的是武汉下雪了,明天周六,一切都是这么美好.哈哈 ...
- 《CLR Via C# 第3版》笔记之(十) - 可选参数和可变数量参数
C#中也可以像动态语言那样,定义可选参数和可变数量参数.通过使用可选参数和可变数量参数可以构建更加灵活的函数. 主要内容: 可选参数 可变数量参数 1. 可选参数 可选参数即调用函数时,传递参数的个数 ...
- C#可选参数、命名参数、参数数组
学习了C#4.0的新特性:可选参数.命名参数.参数数组. 1.可选参数,是指给方法的特定参数指定默认值,在调用方法时可以省略掉这些参数. 但要注意: (1)可选参数不能为参数列表的第1个参数,必须位于 ...
- c# 可选参数与命名实参
c#4.0: 链接:C# 可选参数 命名参数 转载于:https://www.cnblogs.com/lbonet/p/7249601.html
- php6 配置,thinkphp6路由可选参数配置
thinkphp6 路由可选参数配置后#0 [0]InvalidArgumentException in Container.php line 455 方法参数错误:id 路由配置参考手册如下 可选变 ...
- 【Flutter】Dart 面向对象 ( 类定义 | 类的继承 | 私有变量 | 可选参数 | 默认参数 | 初始化列表 )
文章目录 一. Dart 面向对象 二. 类定义 三. 类的继承 四. 私有变量 五. 可选参数与默认参数 六. 初始化列表 七. 完整代码示例 八. 相关资源 一. Dart 面向对象 OOP 基本 ...
- 精进不休 .NET 4.0 (4) - C# 4.0 新特性之命名参数和可选参数
[索引页] [源码下载] 精进不休 .NET 4.0 (4) - C# 4.0 新特性之命名参数和可选参数, 动态绑定(dynamic), 泛型协变和逆变, CountdownEvent, Barri ...
最新文章
- centos6.7部署solr-6.3.0
- 【MFC三天一个游戏】之 局域网黑白棋
- java bip-39_bip39
- ML之sklearn:sklearn.linear_mode中的LogisticRegression函数的简介、使用方法之详细攻略
- qt 报错pcap.h头文件不存在
- 2019-02-27-算法-进化(寻找两个有序数组的中位数)
- 90后副教授一作发Science,刷新该校历史
- HTML+CSS+JS实现 ❤️3D建筑结构旋转特效❤️
- Azure Synapse Analytics简介第1部分:什么是Azure Synapse Analytics?
- 解决自定义UITableViewCell在浏览中出现数据行重复的问题
- Linux系统之下的基本gdb调试
- 本特利电源模块3500/15-05-05-00
- 如何配置ASP运行环境
- mysql numeric 空值_mysql数据库不能添加NULL值,该怎么解决 - numeric
- 842计算机基础考试大纲,(842)考试大纲-计算机专业基础.docx
- 块级和图片的1px间隙
- 著名的斐波拉契数列(Fibonacci),除第一个和第二个数外,任意一个数都可由前两个数相加得到: 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
- 易之 - 我是个大师(2014年3月6日)
- win10下quartus ii 13.1原理图图标和元件名字体大小问题
- skywalking 之 告警篇