不是有效的函数或过程名_过程和函数

ad5e446829cec577be777ec4a676b758.png

      VBA代码有两种组织形式,一种是过程,另一种就是函数。其实过程和函数有很多相同之处,除了使用的关键字不同之外,还有不同的是:

      函数有返回值,过程没有。

      函数可以在Access窗体,查询中像一般的Access函数那样使用,但过程不可以。

      过程可以指定给Access窗体中的按钮或者图片等对象,但是函数不可以。

      函数只能在被调用时执行,比如在过程中调用,或者在另一个函数中调用,或者在Access窗体中调用。但不能直接执行,而过程是可以的。

      虽然可以把所有代码都放在一个过程,或者一个函数里面,但是这样会使代码难以维护,特别是非常不便于其他人查看修改。而有时一些重复性的代码,也应该把它们独立出去,作为一个子过程或子函数来组织。使用子过程和子函数的目的,就是为了便于组织代码、便于维护。

1. 过程 Sub

      过程以Sub开头,End Sub结束,过程中需要执行的代码放在中间。格式如下: 

Sub 过程名()

    ' 需要在过程中执行的代码

End Sub

      过程名后面的括号是必须的,过程可以带参数,就放置在括号里面,稍后会有说明。

     过程示例:

Sub test()

    Debug.Print "Hello"

End Sub

2. 函数 Function

      与过程类似,函数的格式如下:

Function 函数名(参数1, 参数2, ...) As 数据类型

    ' 需要在函数中执行的代码

    函数名 = 函数执行后的结果

End Function

      函数名后面的括号是必须的,函数通常都带有参数,放置在括号里面。函数也可以不带参数,但这种情况下的函数通常没什么意义。

      括号后面的 As 数据类型 虽然并不是必须的,但是我强烈建议加上。因为函数通常都需要有 返回值,这个数据类型就表示着返回值的数据类型。

      函数体最后通常都带有一条返回值语句,把函数执行的结果赋值给函数名,就可以在调用这个函数的地方得到这个函数的执行结果。这个返回结果的数据类型应该与函数名后面As的数据类型一致,否则可能会出错。

     函数示例:

Function my_sum(n1 as Integer, n2 as Integer) As Integer

    Dim s As Integer

    s = n1 + n2

    my_sum = s

End Function

      上例中定义了一个名为my_sum的函数,它接受两个类型为Integer的参数,并且返回值是Integer类型。在函数内部计算了这两个参数相加的和,并把这个和作为返回值赋给my_sum。可以通过调用这个函数,并传递相应的参数,获得它的返回值。

定义函数后,就可以在VBA中的过程,或者其它函数中使用这个函数了。

3. 过程和函数的调用

      前面说过,过程和函数,都可以是被相互调用的。

3.1 过程的调用

      格式1:

Call过程名

      格式2:

Call 过程名(参数1, 参数2, ...)

      如果过程不带参数,那么可以使用第1种格式,过程名后面不需要括号。

      如果过程带有参数,则要按照参数的顺序依次把参数写到过程名后面的括号中。即使用第2种格式。

3.2 函数的调用

      函数的调用通常会在调用时把其赋值给一个变量,以获取函数返回值。

Sub test()

    Dim s As Integer

    s = my_sum(5, 5)

    Debug.Print s

End Sub

Function my_sum(n1 As Integer, n2 As Integer) As Integer

    Dim s As Integer

    s = n1 + n2

    my_sum = s

End Function

      这里应该提出的是,函数应当要有返回值的,因为如果不需要返回值,那就应该直接使用过程而不是函数了。

4. 参数的使用

      参数和使用对于过程和函数都是一样的。所以本节的内容对过程和函数都适用。

      参数可分为可选参数和必选参数两种。必选参数在调用(过程或函数时)必须加上,否则会报错。可选参数则可写可不写。默认是必选参数,可选参数在定义时用Optional关键字声明,并且可选参数必须放在参数列表的最后面。

4.1 必选参数

      必选参数在定义时放置在过程或函数名后面的括号中,格式为:

      参数名 As 参数类型

如:

Sub sub_test(s As String)

    Debug.Print s

End Sub

在调用时,必须传入参数:

Sub test()

    Call sub_test("hello")

End Sub

4.2 可选参数

      格式与必选参数类似,只是在参数名前面用Optional声明参数是可选的。

      Optional 参数名 As 参数类型

如:

Sub sub_test(Optional s As String)

    Debug.Print s

End Sub

      在调用上述过程时,可以不传入参数,此时则不会输出任何东西,也不会报错,因为参数是可选的。如果传入了参数,则会输出这个参数。

      可选参数还可以设置默认值,即如果在调用时不显式传入这个参数的话,那么就使用定义时所使用的值。如下过程:

 Sub sub_test(Optional s As String = "Hello, World")

    Debug.Print s

End Sub

带参数调用:

Sub test()

    Call sub_test("I am a boy")

End Sub

输出:I am a boy

不带参数调用:

Sub test()

    Call sub_test

End Sub

输出:Hello, World

4.3 同时使用可选参数与必选参数

      此时可选参数必须放在最后 

Sub sub_test(var As Integer, Optional s As String = "Hello, World")

    Debug.Print var

    Debug.Print s

End Sub

      只传入必选参数:

Sub test()

    Call sub_test(50)

End Sub

      输出:

50

Hello, World

      同时传入可选参数与必选参数:

Sub test()

   Call sub_test(50, "Hi, Meinv")

End Sub

      输出:

50

Hi, Meinv

End推荐阅读ef87cb1d53e451817eed2437f40f8b7a.pngAccess训练营 从0基础开始,循序渐进,系统化的训练营课程,整合作业、课表、社群,为学员提供答疑,获得更佳的学习效果。【详情>>】943030df8fd13ca3dad8edd7ea9890ab.pngAccess专家课堂 是Access数据库爱好者提升技能的专业课堂,由微软最有价值专家张志创办,课堂有众多Access课程,可通过电脑或微信学习。【详情>>】5700cf038c78e37c04ba90f651a37680.pngAccess软件作品 十二位Access学员对自已开发的软件进行了介绍并分享开发心得,一起来了解Access开发的软件。【详情>>】7f6f85809d447ba311d0d1f020e75a6e.png从Excel到Access数据库 为广大Excel用户了解、学习Access数据库开设的一个实用课程,侧重于数据统计分析。【详情>>】f7f43435dfe9fd1377cf1423fb6b37ee.pngAccess每天3分钟 视频课程共50集,Access的基础知识并结合示例详细讲解,每集视频只有短短几分钟,学员可以利用碎片化的时间,每天进步一点点【详情>>】7dcd68062b4a945773ae16b19dae6a08.png张志,Access数据库培训讲师,『Access软件网』创始人,服务过的知名企业有北京奔驰、立达(中国)纺织仪器、宜家(中国)投资等。 2003~2013年连续10年获微软最有价值专家。【详情>>】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/574935.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

浏览器快捷键_浏览器快捷键,让你事半功倍

随着互联网时代的发展,手机、电脑已经成为人们生活中不可或缺得一部分,无论是生活还是工作。尤其是办公室族,几乎每天都要面对电脑7/8个小时,查找各种信息或者浏览新闻,浏览器无可厚非的成为了装机必备的软件&#xff…

小程序iconfont报错_【经验】开发微信小程序经验总结

一.技术要求(语言方面)有H5或H4和CSS3的书写经验,没有建议观看B站中的 渡一教育-Web前端开发(html css不算语言)。强烈推荐他们的视频,主讲人没有口音且视频质量很高,是哈尔滨理工大学毕业之后进入阿里工作的Web前端工程师 姬成老师。JavaScr…

python移动端web开发代码_移动web前端开发,前端开发工作总结,移动端页面开发-我主页-一个前端程序猿的博客...

热门推荐html/css一、escape和它们不是同一类简单来说,escape是对字符串(string)进行编码(而另外两种是对URL),作用是让它们在所有电脑上可读。编码之后的...标签:03-22html/css场景: 在项目开发过t程中需要找到url中某个参数的值…

【BZOJ】【1086】 【SCOI2005】王室联邦

树分块 orz vfk && PoPoQQQ http://vfleaking.blog.163.com/blog/static/174807634201231684436977/http://blog.csdn.net/popoqqq/article/details/42772237 这题是要把树分成一块一块的……(感觉好像不是原来理解的树分块处理操作啊……) 每块…

红黑树和平衡二叉树的区别_面试题精选红黑树(c/c++版本)

红黑树的使用场景非常广泛,比如nginx中用来管理timer、epoll中用红黑树管理事件块(文件描述符)、Linux进程调度Completely Fair Scheduler用红黑树管理进程控制块、CSTL中map,set的底层实现全是用的红黑树。掌握红黑树的原理以及使用场景&…

linux中按行读取文件,Linux按行读取文件内容

方法1&#xff1a;while循环中执行效率最高&#xff0c;最常用的方法。function while_read_LINE_bottm(){While read LINEdoecho $LINEdone < $FILENAME}#!/bin/bashwhile read linedoecho $linedone < filename(待读取的文件)注释&#xff1a;习惯把这种方式叫做read釜…

酱油和gbt酱油哪个好_酱油越贵越好?认准瓶身这4处,轻松挑到好酱油!

买酱油这件事&#xff0c;爷叔阿姨们都不陌生。现在市面上酱油品种很多&#xff0c;除了普通的生抽、老抽以外&#xff0c;还有些别的口味&#xff0c;比如海鲜酱油、菌菇酱油等等&#xff0c;价格比普通的还高出不少&#xff0c;这些酱油真的更鲜更好吗&#xff1f;买酱油的2大…

linux网站465端口是什么端口,发送端口25,465,587端口疑问解答

25端口(SMTP)&#xff1a;25端口为SMTP(Simple Mail Transfer Protocol&#xff0c;简单邮件传输协议)服务所开放的&#xff0c;是用于发送邮件。如今绝大多数邮件服务器都使用该协议。当你给别人发送邮件时&#xff0c;你的机器的某个动态端口(大于1024)就会与邮件服务器的25号…

uml 时序图_程序猿都应学习的语言:看 25 张图学 UML

作者 | 逸珺责编 | 屠敏来源 | 嵌入式客栈作为程序猿都最好掌握的一门语言&#xff0c;那就是UML(Unified Modeling Language)&#xff0c;统一建模语言(UML)是软件工程领域中一种通用的开发建模语言&#xff0c;旨在提供一种可视化系统设计的标准方法。是开发人员、系统设计人…

新服务器的配置

新服务器的安装好那三款软件后还是打不开会报错&#xff0c;去服务器管理网站增加执行权即可。 转载于:https://www.cnblogs.com/longhun/p/4266665.html

Linux下好用的日志库,我使用過的Linux命令之tailf - 跟蹤日志文件/更好的tail -f版本...

用途說明tailf命令幾乎等同於tail -f&#xff0c;嚴格說來應該與tail --followname更相似些。當文件改名之后它也能繼續跟蹤&#xff0c;特別適合於日志文件的跟蹤(follow the growth of a log file)。與tail -f不同的是&#xff0c;如果文件不增長&#xff0c;它不會去訪問磁盤…

Android学习笔记(四十):Preference的使用

Preference直译为偏好&#xff0c;博友建议翻译为首选项。一些配置数据&#xff0c;一些我们上次点击选择的内容&#xff0c;我们希望在下次应用调起的时候依旧有效&#xff0c;无须用户再一次进行配置或选择。Android提供preference这个键值对的方式来处理这样的情况&#xff…

telegr怎么连接不上_无线网密码正确但是手机连接不上wifi?

现在企业、家庭、餐厅、宾馆到处都有WiFi无线网络信号&#xff0c;为大家的电脑、手机提供免费的无线网络服务&#xff0c;但是有的时候明明有信号而无线网密码正确却连不上&#xff0c;是多么痛苦的一件事情。那么无线网密码正确但是手机连接不上wifi怎么回事&#xff1f;下面…

hdu3652(数位dp)

要求找出范围内含有“13”且能被13整除的数字的个数 可以使用数位dp dp[i][j][0] 表示长度为i&#xff0c;余数为j&#xff0c;不含13的数字的个数 dp[i][j][1] 表示长度为i&#xff0c;余数为j&#xff0c;3开头的数字的个数 dp[i][j][2] 表示长度为i&#xff0c;余数为j&…

怎么查看电脑是不是禁ping_怎么查看电脑内存的大小,找回丢失的内存,电脑小技巧...

小A自己组装了一台电脑&#xff0c;配件都是在jd买了。他高高兴兴的安装了系统准备开始体验一把&#xff0c;同事突然问&#xff0c;你的电脑内存是多少&#xff0c;他点来点去也没找到答案。他只知道他买了一个8G的内存条。.我们一般查看内存有两个地方。一我们的电脑 属性 安…

finereport字段显示设置_QA | 表单如何设置字段显示逻辑?

Hi&#xff0c;大家好&#xff01;表姐又来给大家答疑解惑啦&#xff01;这一期的Q&A我们来聊聊表单如何设置字段显示逻辑。字段显示逻辑是什么&#xff1f;字段显示逻辑是指根据设定字段条件&#xff0c;显示或隐藏特定的字段&#xff0c;可以实现选择不同内容&#xff0c…

数据库管理之数据表管理(1)

数据类型 创建数据表 语法 CREATE TABLE 表名 ( 字段名1 数据类型 列的属性 列约束, 字段名2 数据类型 列的属性 列约束, 字段名3 数据类型 列的属性 列约束, … )列属性的格式&#xff1a; [NULL|NOT NULL] [IDENTITY(标识种子, 标识增量)]列约束的格式&#xff1a; [CONST…

AngularJs-指令和指令之间的交互(动感超人)

前言&#xff1a; 上节我们学习到了指令和控制器之间的交互&#xff0c;通过给指令添加动作&#xff0c;调用了控制器中的方法。本节我们学习指令和指令之间是如何交互的&#xff0c;我们通过一个小游戏来和大家一起学习&#xff0c;听大漠老师说这是国外的人写的demo&#xff…

vba 指定列后插入列_在不同的列左侧插入指定数量的空白列

任务: 在不同的列左侧插入指定数量的空白列(本例是要求在每列左侧插入第2行数字对应的空白列) 插入空白列前 插入空白列后 vba代码如下&#xff1a; Sub 在不同的列左侧插入指定数量的空白列() Dim m, n, i As Integer For n 5 To 1 Step -1 Sheets("Sheet1").C…

怎么监听linux防火墙,linux怎么查看防火墙是否开启并清除防火墙规则?

iptables是linux下的防火墙组件服务&#xff0c;相对于windows防火墙而言拥有更加强大的功能&#xff0c;下面我们就来看看linux系统中关于iptables的一般常见操作&#xff0c;判断linux系统是否启用了iptables服务&#xff0c;并清除防火墙规则的教程。一、检查iptables是否安…