3VBA编程基础-过程调用和参数传递(精)
- 格式:ppt
- 大小:48.00 KB
- 文档页数:12
VBA的过程及参数详解VBA的过程及参数详解VBA中的过程(Procedure)有两种,⼀种叫函数(Function),另外⼀种叫⼦程序(Subroutine),分别使⽤Function和Sub关键字。
它们都是⼀个可以获取参数、执⾏⼀系列语句、以及改变其参数的值的独⽴过程。
⽽与 Function 过程不同的是:带返回值的 Sub 过程不能⽤于表达式。
这⾥主要介绍⼦程序的使⽤⽅法,同样这些⽅法也可以应⽤到Function上。
语法[Private | Public | Friend] [Static] Sub name [(arglist)][statements][Exit Sub][statements]End Sub* ⽤[]符号括起来的选项是可选项[Private | Public | Friend]这三个关键字与作⽤范围有关。
Private表⽰私有,即这个过程只能从本模块⾥⾯调⽤。
使⽤这个关键字,从菜单“⼯具”->”宏”->”宏…”中将看不到该过程。
Public表⽰公⽤,这样从其它的模块也可以访问这个过程。
如果没有使⽤ Public、Private 或 Friend 显式指定,Sub 过程按缺省情况就是公⽤的。
公⽤的过程可以从菜单”⼯具”->”宏”->”宏…”中看到。
Friend⽤在类模块⾥⾯,较少使⽤,在此就不介绍了。
Static是静态的意思(你可能还记得⽤Static声明静态变量),⽤它声明过程的话,表⽰这个过程中声明的局部变量在下次调⽤这个过程时仍然保持它原来的值。
下⾯是Static声明过程的⽤法。
Static Sub m1()Dim i As IntegerDim j As Integeri = i + 1j = j + 1Debug.Print "i=" & i & " j=" & jEnd SubPrivate Sub m2()Dim i As IntegerDim j As Integeri = i + 1j = j + 1Debug.Print "i=" & i & " j=" & jEnd SubSub try1()Dim i As IntegerDebug.Print "静态过程:"For i = 1 To 10Call m1Next iDebug.Print "私有过程:"For i = 1 To 10Call m2Next iEnd Sub运⾏try1过程,然后可以在⽴即窗⼝⾥看到结果。
VBA编程基础教程一、VBA 语言基础第一节标识符一.定义标识符是一种标识变量、常量、过程、函数、类等语言构成单位的符号,利用它可以完成对变量、常量、过程、函数、类等的引用。
二.命名规则1)字母打头,由字母、数字和下划线组成,如A987b_23Abc2)字符长度小于40,(Excel2002 以上中文版等,可以用汉字且长度可达254 个字符)3)不能与VB 保留字重名,如public, private, dim, goto, next, with, integer, single 等第二节运算符定义:运算符是代表VB某种运算功能的符号。
1)赋值运算符2)数学运算符&、+ (字符连接符)、+(加)、-(减)、Mod(取余)、\(整除)、*(乘)、/(除)、-(负号)、^(指数)3)逻辑运算符Not(非)、And(与)、Or(或)、Xor(异或)、Eqv(相等)、Imp(隐含)4)关系运算符= (相同)、<>(不等)、>(大于)、<(小于)、>=(不小于)、<=(不大于)、Like、Is5)位运算符Not(逻辑非)、And(逻辑与)、Or(逻辑或)、Xor(逻辑异或)、Eqv(逻辑等)、Imp(隐含)第三节数据类型VBA 共有12 种数据类型,具体见下表,此外用户还可以根据以下类型用Type 自定义数据类型。
数据类型类型标识符字节字符串型String $ 字符长度(0-65400)字节型Byte 无 1布尔型Boolean 无 2整数型Integer % 2长整数型Long & 4单精度型Single ! 4双精度型Double # 8日期型Date 无8 公元100/1/1-99/12/31货币型Currency @ 8小数点型Decimal 无14变体型Variant 无以上任意类型,可变对象型Object 无 4第四节变量与常量1)VBA 允许使用未定义的变量,默认是变体变量。
VB过程及其调用VB(Visual Basic,简称VB)是一种基于事件驱动编程的程序设计语言,是Microsoft公司开发的一种高级程序设计语言,常被用于Windows操作系统的应用程序开发。
VB中的过程指的是一系列语句的集合,用于完成特定的任务。
本文将介绍VB中的过程及其调用。
1.过程的定义在VB中,过程可以分为两种类型:Sub过程和Function过程。
Sub过程用于执行一系列操作,没有返回值;而Function过程则返回一个值。
Sub过程的定义格式如下:Sub 过程名(参数列表)'过程主体End SubFunction过程的定义格式如下:Function 过程名(参数列表) As 返回值类型'过程主体End Function其中,参数列表可以包含零个或多个参数,每个参数包含两部分:参数名和参数类型。
返回值类型指的是Function过程的返回值类型,可以是任意VB数据类型。
2.过程的调用在VB中,可以通过过程的名称和参数列表来调用过程。
调用过程时,可以传递参数给过程,如果过程需要返回值,可以将结果保存到一个变量中。
调用Sub过程的语法格式如下:过程名参数列表调用Function过程的语法格式如下:变量名=过程名(参数列表)以下是一个使用Sub过程和Function过程的示例:Sub SayHello(name As String)MsgBox("Hello, " & name & "!")End SubFunction Multiply(a As Integer, b As Integer) As IntegerMultiply = a * bEnd Function调用上述过程的示例代码如下:SayHello("John") '调用Sub过程,显示对话框,输出"Hello,John!"result = Multiply(5, 6) '调用Function过程,将结果保存到变量result中,result的值为303.过程的参数传递在调用过程时,可以传递参数给过程。
VBA中调用API函数的方法和技巧VBA(Visual Basic for Applications)是一种用于微软Office应用程序的编程语言,它提供了许多强大的功能和工具,可以增强Office程序的自动化和扩展性。
在VBA中,调用API函数是一种常见的方式,可以让我们使用计算机系统提供的底层功能,以实现更高级的操作。
本文将介绍VBA中调用API函数的方法和技巧,以帮助您更好地使用VBA进行编程。
1. 了解API函数的基本概念API(Application Programming Interface)是一组定义了程序之间交互方式的规范。
通过调用API函数,我们可以利用操作系统或其他程序提供的功能,而无需自己编写底层代码。
VBA中的API函数是以动态链接库(DLL)的形式提供的,这些DLL文件通常包含了许多函数和过程,可以供我们进行调用。
2. 查找所需的API函数在VBA中调用API函数之前,我们需要先找到需要使用的API函数及其所属的DLL文件。
可以通过以下几种方式来查找:- 在Microsoft的官方文档中查找:Microsoft提供了许多API函数的文档,可以在其网站上找到对应的函数说明和示例代码。
- 在互联网上搜索:许多技术论坛和网站都提供了关于API函数的使用方法和示例代码。
可以通过搜索引擎来寻找相关的资源。
- 使用API查找工具:有一些第三方工具可以帮助我们查找API函数及其所属的DLL文件。
例如,Dependency Walker是一个常用的工具,可以查看DLL文件中包含的函数和模块。
3. 声明API函数在VBA中调用API函数之前,我们需要先声明这些函数,以告诉编译器它们的名称、参数和返回值的类型。
声明API函数的语法如下:```vbaPrivate Declare Function 函数名 Lib "DLL文件名" (参数列表) As 返回值类型```其中,函数名是API函数的名称,DLL文件名是包含该函数的DLL文件的名称,参数列表是函数的参数及其类型,返回值类型是函数的返回值类型。
VBA过程的调用(含过程名称为变量时的方法)VBA过程的调用(含过程名称为变量时的方法)【不带变量调用】一般在VBA里,我们调用某个过程,都会用Call语句,先说说用Call语句直接调用某个过程的方法例如你有一个过程aa如下:Sub aa()Msgbox "喵喵", 64End Sub那么调用这个过程的方法为:Sub Call_aa_01()aaEnd Sub这里,call语句里的call是可以省略的,但为了令代码更清晰,一般程序员会喜欢加上去,以表示aa是一个过程:Sub Call_aa_02()Call aaEnd Sub如果aa是一个带有参数的过程,如:Sub aa(str As String)MsgBox str, 64End Sub那么在用call语句调用的时候,就要这样(不带Call):Sub Call_aa_03()aa "喵喵"End Sub或者这样(带Call):Sub Call_aa_04()Call aa ("喵喵")这里值得注意的是,调用过程的名称如果在整个过程里不是唯一的,即其他模块也有相同名称的过程,那么在调用其他模块里的同名过程时,需要加上模块的名称,如模块1和模块2同时存在过程aa,在模块1里想调用模块2的过程aa,那么必须加上模块2做前缀,否则只会调用同模块下的aa:Sub Call_aa_05()Call 模块2.aaEnd Sub如果aa是在另外一个工作簿里,需要先在VBE-工具-引用,添加引用的工作簿(通常会显示该工作簿的工程名称,如VBAProject1;有多个工程相同时应把自身的工程名删除后再添加personal的工程名),再加上工程名加以调用,这里要注意,相互调用的工作簿是要打开的,而且工程名称不能重复,不然不能引用。
如:Sub call_aa_06()Call VBAProject1.模块2.aaEnd Sub同时,有多个过程aa时,一样需要加上模块名称,只有一个的话模块名称可省略:Sub call_aa_07()Call VBAProject1.aaEnd Sub【带变量调用】好了,以上是传统的调用方法,如果过程名称aa是一个变量呢?我们注意到用Call语句,后面的过程名称不可以是变量,例如以下的调用是行不通的:Sub Call_aa_08()Dim str As Stringstr = "aa"Call str我们要用另一种方法,Application.run方法来调用过程名是变量的过程:Sub Call_aa_09()Dim str As Stringstr = "aa"Application.Run strEnd Sub如果用run方法来调用带参数的过程,则这样,多个参数用逗号分隔:Sub Call_aa_10()Dim str As Stringstr = "aa"Application.Run str, "喵喵"End SubRun方法处理同名过程和Call语句不一样,只要在工作簿中存在相同的名称,即使是工作表里定义的名称,像上一个过程的写法就会报错(没有找到过程或者工程错误),也必须在过程名前加上模块名称(注意点不要漏了),如:Sub Call_aa_11()Dim str As Stringstr = "aa"Application.Run "模块2." & str, "喵喵"End Sub引用其他工作簿(该工作簿必须是打开的),如Book1里的过程则需要加上工作簿名称(注意引号不要漏了),如:Sub Call_aa_12()Dim str As Stringstr = "aa"Application.Run "Book1!模块2." & str, "喵喵"。
VBA在窗体间传递参数的几种常用办法VBA在窗体间传递参数的几种常用办法在实际开发应用中,经常需要在窗体间传递参数。
常用的几种参数传递方法有如下几种:1。
使用openargs在调用的窗体使用如下语句:docmd.openform "被调用的窗体",,,,,,"参数值" 在被调用的窗体使用me.openargs即可获取传递过来的参数2。
使用全局变量先设置一个全局变量,例如:gstrPara,Public gstrPara as string在调用之前传递参数值给这个全局变量gstrPara="参数值"docmd.openform "被调用的窗体"在被调用的窗体里使用gstrPara即可获取传递过来的参数3。
使用tag标记将要传递的参数放置在调用窗体的tag标记里在被调用的窗体里通过调用forms.tag 来获取参数值4。
使用模块变量在调用窗体设置一个公共的模块变量mstrPara将要传递的参数放置在调用窗体的mstrPara变量里在被调用的窗体里通过调用forms.mstrPara 来获取参数值5。
直接获取假如参数来自调用窗体的控件,也可直接调用在被调用的窗体里直接引用调用窗体的控件的值如:forms.控件名.value6。
多个参数传递假如需要传递多个参数,可将参数合并到一个变量里传送(使用指定符号隔开),然后在被调用窗体再拆分这些变量,以达到多个参数传递的效果。
不过,因为一般传递两个参数的时候,多数一个是变量,一个是窗体本身,所以我常用的方法也是比较实用的方法是:在调用窗体使用如下语句:docmd.openform "被调用的窗体",,,,,,"参数值" 而在被调用的窗体里设置一个模块变量mfrmSrc在被调用的窗体的open或load事件中设置set mfrmSrc= screen.activeform这时mfrmSrc就指向原来的调用窗体(因为在窗体未完全加载好前,屏幕上激活的窗体是原来的窗体)使用mfrmSrc你可以获取调用窗体上所有控件及相关的值,并且不需要事先知道原来窗体的名称,具有比较强的通用性。
VBA中的函数和子过程的编写与调用在VBA中,函数和子过程是编写和调用的重要组成部分。
函数用于封装可重复使用的代码,而子过程则用于执行一系列操作。
在本文中,我将详细介绍如何编写和调用VBA中的函数和子过程。
在VBA中,函数和子过程都需要以关键字"Sub"开始,并以"End Sub"结束。
函数的关键字是"Function",并且需要返回一个值。
函数和子过程可以传递参数,这些参数可以是任何数据类型。
编写函数时,我们需要指定函数的名称和返回类型。
在函数体中,我们可以定义局部变量,并使用VBA的控制结构(如条件语句和循环语句)来执行一系列操作。
下面是一个示例,演示了如何编写一个名为"AddNumbers"的函数,该函数接收两个整数参数并返回它们的和:```vbaFunction AddNumbers(num1 As Integer, num2 As Integer) As IntegerDim sum As Integersum = num1 + num2AddNumbers = sumEnd Function```在上面的示例中,"AddNumbers"函数接收两个整数参数"num1"和"num2",并将它们相加赋值给局部变量"sum"。
最后,函数使用"AddNumbers = sum"语句将"sum"作为函数的返回值。
要调用函数,我们只需在代码中使用函数的名称,传递所需的参数。
下面是调用"AddNumbers"函数的示例:```vbaSub Example()Dim result As Integerresult = AddNumbers(5, 10)MsgBox "The sum is: " & resultEnd Sub```在上面的示例代码中,我们声明一个变量"result"来存储函数的返回值。