有时候,你也许要给函数提供额外的参数,例如,你有一个计算每个人膳食的函数。然而,有时你不希望函数进行相同的计算。在参数名称前面加上关键字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 之可选参数相关推荐

  1. 如何定义带有可选参数的函数python_Python如何定义有可选参数的元类

    问题 你想定义一个元类,允许类定义时提供可选参数,这样可以控制或配置类型的创建过程. 解决方案 在定义类的时候,Python允许我们使用 ``metaclass``关键字参数来指定特定的元类. 例如使 ...

  2. php laravel用的多不,php-Laravel多个可选参数不起作用

    在使用带有2个可选参数的路线时, Route::get('/abc-{abc_id?}/xyz-{xyz_id?}', function($abc_id=0, $xyz_id=0) { return ...

  3. [读书笔记]C#学习笔记七: C#4.0中微小改动-可选参数,泛型的可变性

    前言 下面就开始总结C#4.0的一些变化了, 也是这本书中最后的一点内容了, 这一部分终于要更新完了. 同时感觉再来读第二遍也有不一样的收获. 今天很嗨的是武汉下雪了,明天周六,一切都是这么美好.哈哈 ...

  4. 《CLR Via C# 第3版》笔记之(十) - 可选参数和可变数量参数

    C#中也可以像动态语言那样,定义可选参数和可变数量参数.通过使用可选参数和可变数量参数可以构建更加灵活的函数. 主要内容: 可选参数 可变数量参数 1. 可选参数 可选参数即调用函数时,传递参数的个数 ...

  5. C#可选参数、命名参数、参数数组

    学习了C#4.0的新特性:可选参数.命名参数.参数数组. 1.可选参数,是指给方法的特定参数指定默认值,在调用方法时可以省略掉这些参数. 但要注意: (1)可选参数不能为参数列表的第1个参数,必须位于 ...

  6. c# 可选参数与命名实参

    c#4.0: 链接:C# 可选参数 命名参数 转载于:https://www.cnblogs.com/lbonet/p/7249601.html

  7. php6 配置,thinkphp6路由可选参数配置

    thinkphp6 路由可选参数配置后#0 [0]InvalidArgumentException in Container.php line 455 方法参数错误:id 路由配置参考手册如下 可选变 ...

  8. 【Flutter】Dart 面向对象 ( 类定义 | 类的继承 | 私有变量 | 可选参数 | 默认参数 | 初始化列表 )

    文章目录 一. Dart 面向对象 二. 类定义 三. 类的继承 四. 私有变量 五. 可选参数与默认参数 六. 初始化列表 七. 完整代码示例 八. 相关资源 一. Dart 面向对象 OOP 基本 ...

  9. 精进不休 .NET 4.0 (4) - C# 4.0 新特性之命名参数和可选参数

    [索引页] [源码下载] 精进不休 .NET 4.0 (4) - C# 4.0 新特性之命名参数和可选参数, 动态绑定(dynamic), 泛型协变和逆变, CountdownEvent, Barri ...

最新文章

  1. centos6.7部署solr-6.3.0
  2. 【MFC三天一个游戏】之 局域网黑白棋
  3. java bip-39_bip39
  4. ML之sklearn:sklearn.linear_mode中的LogisticRegression函数的简介、使用方法之详细攻略
  5. qt 报错pcap.h头文件不存在
  6. 2019-02-27-算法-进化(寻找两个有序数组的中位数)
  7. 90后副教授一作发Science,刷新该校历史
  8. HTML+CSS+JS实现 ❤️3D建筑结构旋转特效❤️
  9. Azure Synapse Analytics简介第1部分:什么是Azure Synapse Analytics?
  10. 解决自定义UITableViewCell在浏览中出现数据行重复的问题
  11. Linux系统之下的基本gdb调试
  12. 本特利电源模块3500/15-05-05-00
  13. 如何配置ASP运行环境
  14. mysql numeric 空值_mysql数据库不能添加NULL值,该怎么解决 - numeric
  15. 842计算机基础考试大纲,(842)考试大纲-计算机专业基础.docx
  16. 块级和图片的1px间隙
  17. 著名的斐波拉契数列(Fibonacci),除第一个和第二个数外,任意一个数都可由前两个数相加得到: 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
  18. 易之 - 我是个大师(2014年3月6日)
  19. win10下quartus ii 13.1原理图图标和元件名字体大小问题
  20. skywalking 之 告警篇

热门文章

  1. 计算机中的首地址是多少,物理首地址是什么
  2. C语言学习day01
  3. 网络电话服务器安全认证管理系统,CA 数字证书认证系统建设解决方案
  4. 基于态势感知的智能机器透明度与人-智能机团队效能研究
  5. NLP( 包括语音识别)
  6. 计算机故障维修要遵循什么原则,计算机故障排除原则和方法;
  7. Hyper-V网络设置实现宿主机.虚拟机之间互联互通
  8. 基于Vue封装酷炫进度条插件
  9. java编写的浏览器_Java编写简单的网页浏览器
  10. 在1至2019中,有多少个数的数位中包含数字9?(java)