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

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,一经查实,立即删除!

相关文章

怎么下载php源文件,设计了一个php下载当前文件,却把php源文件下载下来了,为何?...

当我点a.txt下载后,打开txt文件,发现里面的内容不是a.txt本身的内容,而是该php文件中除了php代码的其他文本内容,这样该如何解决?资料下载回复讨论(解决方案)$file_name”a.txt”;$file_dir”./”;if(!file_exists($fi…

自己构造构造函数

/*** description 扩展function的原型* function* obj this的上下文*/if(!Function.prototype.bind){Function.prototype.bind function(obj){var slice [].slice,args slice.call(arguments,1),self this,nop function(){},bound function(){return self.apply(this ins…

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

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

java f.lenth返回值,这个是什么意思,求仔细说明

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼import java.io.File;import java.io.IOException;import java.util.Random;import java.util.Scanner;public class Test {boolean flagtrue;int count;String word;public static void main(String[] args) {Test t new Test();…

MySQL中的常用函数

1、 字符串函数 2、 字符串函数 模数和被模数任何一个为NULL结果都为NULL。 3、 日期和时间函数 4、 流程函数 5、其他常用函数 MySQL Administrator(图形化管理工具) MySQL Query Brower(客户端查询工具) phpMyAdmin(…

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

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

超市商品管理系统php,超市商品管理系统(含附源代码)超市商品管理系统(含附源代码).doc...

超市商品管理系统(含附源代码)超市商品管理系统(含附源代码)黔南民族师范学院软件设计课程设计报告题 目: 超市商品管理系统系部名称:计科系专业名称:信息管理与信息系统班 级:B12计信班学号:1208045139学生姓名 &…

IOS_OC_id ,NSObject, idlt;NSObjectgt;差别

我们常常会混淆下面三种申明&#xff08;我是没有留意过&#xff09;&#xff1a; 1. id foo1; 2. NSObject *foo2; 3. id<NSObject> foo3;第一种是最经常使用的&#xff0c;它简单地申明了指向对象的指针&#xff0c;没有给编译器不论什么类型信息&#xff…

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

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

tablednd保存 php,JQuery-tableDnD 拖拽的基本使用介绍

在页面上导入js复制代码 代码如下:jquery-1.3.2.min.jsjquery.tablednd_0_5.js注意&#xff1a;一定要先导入jquery-1.3.2.min.js 否则出错。建table复制代码 代码如下:1Onesome text2Twosome text3Threesome text4Foursome text5Fivesome text6Sixsome text插入js代码复制代码…

移动端页面0.5px border的实现

移动端上经常发现1px边框异常的粗&#xff0c;因此&#xff0c;决定用伪类配合css3来实现0.5px边框 代码如下&#xff1a; 1 <!doctype html>2 <html lang"en">3 <head>4 <meta content"widthdevice-width, initial-scale1.0, maximum-sc…

python 漂亮界面demo_在这个什么都看脸的时代,如何用 GUI 提高 python 程序的颜值?...

0、前言有不少初学者会问&#xff0c;Python 写的程序看起来好丑啊&#xff0c;只能在那个黑黑的框里运行吗&#xff1f;隔壁家的 JS 好像挺好看的&#xff0c;还能有酷炫效果呢……其实呢&#xff0c;术业有专攻&#xff0c;Python 擅长的领域在后台服务器、数据处理、科学计算…

mysql5.3开发文件,cent0s 5.3该下载哪个版本的 mysql安装文件比较合适

我当前的linux是cent0s 5.3请问应该下载哪个版本的 mysql安装文件比较合适&#xff1f;&#xff1f;* Windows* Windows x64* Linux (non RPM packages)* Linux (non RPM, Intel C/C compiled, glibc-2.3)* Red Hat Enterprise Linux 3 RPM (x86)* Red Hat Enterprise Linux 3 …

【LeetCode】Minimum Depth of Binary Tree 二叉树的最小深度 java

【LeetCode】Minimum Depth of Binary Tree Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node. 递归和非递归&#xff0c;此提比较简单。广度优先遍历即可。…

pythonopencv的配置_python配置与使用OpenCV

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台&…

php中datetime,珍藏 PHP中DateTime的常用方法

前言实例化对象前面加\表示的是&#xff0c;在命名空间中使用原生的类&#xff0c;如果没有使用命名空间的话&#xff0c;可以把前面的\给删除掉输出当前时间$datetime new \DateTime;print_r($datetime->format(Y-m-d H:i:s));输出给定的时间$datetime new \DateTime(201…

php 实现跨站下载图片,一个图片url访问后直接下载怎样实现

一个图片url访问后直接下载怎样实现先看代码downloadIamge(imgsrc, name) {//下载图片地址和图片名let image new Image();// 解决跨域 Canvas 污染问题image.setAttribute("crossOrigin", "anonymous");image.onload function() {let canvas document.…

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

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

matlab火焰测温源程序,一种火焰测温方法与流程

本发明涉及一种测量火焰温度的方法。背景技术&#xff1a;火焰是气态的且正在发生剧烈氧化反应的燃料及各种中间产物及最终产物的混合物。在煤化工、化工领域&#xff0c;在高温、高压反应器(或气化炉)上&#xff0c;火焰检测器一般安装在气化炉的顶部或者中下部&#xff0c;用…

python spark hadoop_使用Scala或Python列出存储在Hadoop HDFS上的Spark群集中可用的所有文件?...

列出Spark中本地可用的所有文件名的最有效方法是什么&#xff1f;我正在使用Scala API&#xff0c;但是&#xff0c;Python也应该没问题。解决方案import org.apache.hadoop.fs。{FileSystem&#xff0c;FileUtil&#xff0c;Path}import scala.collection.mutable.Stack$ b $ …