VBA过程和函数
VBA语句VBA函数

VBA语句1)AppActivate : 激活一个应用程序窗口2)Beep : 通过计算机喇叭发出一个音调3)Call : 将控制权转移到一个过程4)ChDir : 改变当前的目录5)ChDrive : 改变当前驱动器6)Close : 关闭一个文本文件7)Const : 声明一个常量值8)Date : 设置当前系统日期9)Declare : 声明对动态链接库中外部过程的引用10)DefBool : 将以指定字母开头变量的默认数据类型设置为boolean11)DefByte : 将以指定字母开头变量的默认数据类型设置为byte12)DefCur : 将以指定字母开头变量的默认数据类型设置为currency13)DefDate : 将以指定字母开头变量的默认数据类型设置为date14)DefDbl : 将以指定字母开头变量的默认数据类型设置为double15)DefDec : 将以指定字母开头变量的默认数据类型设置为decimal16)Defint : 将以指定字母开头变量的默认数据类型设置为integer17)DefLng : 将以指定字母开头变量的默认数据类型设置为long18)DefObj : 将以指定字母开头变量的默认数据类型设置为object19)Defsng : 将以指定字母开头变量的默认数据类型设置为single20)Defstr : 将以指定字母开头变量的默认数据类型设置为string21)DefVar 将以指定字母开头变量的默认数据类型设置为variant22)DeleteSetting : 在windows注册表中,从应用程序项目中删除区域或注册表项设置23)Dim : 声明变量及其数据类型24)Do-Loop : 循环通过一组指令25)End :26)Enum : 声明枚举类型27)Erase : 重新初始化一个数组28)Error : 模拟一个特定的错误情形29)Event声明一个用户定义的事件30)Exit do : 退出一个用户定义代码块31)Exit for : 退出nor-next代码块32)Exit Function : 退出function程序33)Exit Property : 退出属性程序34)Exit Sub : 退出一个子过程35)Filecopy : 复制一个文件36)For Each-Next : 循环通过序列中每个成员的指令集37)For-Next : 按指定次数循环通过一个指令集38)Function : 声明function过程和参数39)Get : 从文本文件中读取数据40)Gosub…Ruturn : 从一个过程跳到另一个过程执行,执行后返回41)GoTo:跳到过程指定的语句42)If-Then-Else : 有条件的执行语句43)Implements : 指定将在类模块实现的接口或类44)Input# 从顺序文本中读取数据45)Kill : 从磁盘中删除文件46)Let将表达式的值赋给一个变量或属性47)Line Input# : 从顺序文本中读取一行数据48)Load : 加载一个对象,但是不显示49)Lock…Unlock : 控制访问一个文本文件50)Lset : 左对齐一个字符串变量中的字符串51)Mid : 用其它字符代替字符串的字符52)Mkdir : 创建一个新目录53)Name : 重命名一个文件和目录54)On Error : 在出现错误时给出具体的指示55)On…GoSub : 根据条件转到特定行执行56)On…GoTo : 根据条件转到特定行执行57)Open : 打开一个文本文件58)Option Base : 修改数据默认下限59)Option Explicit : 强制声明模块中的所有变量60)Option Compare比较字符串时声明默认比较方式61)Option Private提明整个模块都是私有的62)Print/# 向顺序文件中写入数据63)Private : 声明一个本地数组或变量64)Property Get声明一个proerty get 过程的名称和参数65)Property Let 声明一个proerty leT 过程的名称和参数66)Property Set声明一个proerty set 过程的名称和参数67)Public : 声明一个公共数组或变量68)Put : 向文本文件中写入一个变量69)RaiseEvent : 引发一个用户定义的事件70)Randomize : 初始化随机数字生成器71)ReDim修改数组的维度72)Rem : 包含一个注释行(与单引号[‘]相同73)Reset : 关闭所有打开的文本文件74)Resume : 当错误处理程序结束后,恢复运行75)RmDim : 删除一个空目录76)Rset : 右对齐一个字符串变量中的字符串77)SaveSetting : 在windows注册表中保存或创建应用程序记录78)Seek : 设置文本文件中下一个访问的设置79)Select Case 有条件的执行语句80)SendKeys发送按键到活动窗口中81)Set : 将对象引用赋值给一个变量或属性82)SetAttr : 修改文件的属性信息83)Static : 在过程级别中声明变量,以便在代码运行过程中始终保存变量的值84)Stop : 暂停程序的执行85)Sub86)Time : 设置系统时间87)Type : 定义一个自定义据类型88)Unload 从内在在删除一个对象89)While/… Wend 只要指定条件为真, 循环通过指令集90)Width 设置文本文件的输出行宽度91)With : 设置对象的一系列属性92)Write# ,向顺序文本文件中写入数据VBA函数1)Abs :返回一个数的绝对值2)Array :返回包含一个数组的变量3)AsC :将字符串的第一个字符转换成它的ASCII值4)Atn :返回一个值的正切值5)CallByName :执行方法,设置或返回对象的某个属性6)CBool :将表达式转换成Boolean数据类型7)CByte : 将表达式转换成Byet数据类型8)CCur : 将表达式转换成CurrencY数据类型9)CDate : 将表达式转换成Date数据类型10)CDbl : 将表达式转换成Double数据类型11)CDec : 将表达式转换成decimal数据类型12)Choose :选择或返回参数列表中的某个值13)Chr :将字符代码转换成字符串14)CInt;将表达式转换成integer数据类型15)CLng :将表达式转换成long数据类型16)Cos :返回一个数值的余弦值17)CreateObject :创建一个ole自动对象18)CSng : 将表达式转换成single数据类型19)CStr :将表达式转换成string数据类型20)CurDir :返回当前的路径21)CVar : 将表达式转换成variant数据类型22)CVDate : 将表达式转换成dade数据类型23)CVErr :返回对应错误编号的用户定义错误值24)Date :返回当前系统日期25)DateAdd :给某个日期添加时间间隔26)DatEDiff :返回某两个日期的时间间隔27)VBA函数28)DatePart :返回日期特定的部分29)DateSerial :将日期转换成序列号30)DateValue :将字符串转换成日期31)Day :返回一月中的某一天32)DDB :返回某个资产的折旧33)Dir :返回与模式匹配的文件或目录的名称34)DoEvents :转让控制权,以便让操作系统处理其它事件35)ENVIRON :返回一个操作系统环境字符串36)Eof :如果达到文本文件末尾就返回TRUE37)Error :返回对应于错误编号的错误消息38)Exp :返回自然对数(E)的某次方39)EileAttr :返回文本文件文件模式40)FileDateTime :返回上次修改时的日期和时间41)FileLen :返回文件中的字节数42)Filter :返回指定筛选条件的一个字符串数组的子集43)Fix :返回一个数的整数部分44)Format :以某种特殊的格式显示表达式.45)FormatCurrency :返回系统货币符号格式化后的表达式46)FormatDateTime :返回格式化为日期或者时间的表达式47)FormatNumber :返回格式化为数值的表达式48)FormatPercent :返回格式化为百分数的表达式49)FreeFile :当处理文本文件时,返回下一个可用的文件编号50)Fv :返回年金终值51)GetAllSettings :返回windows注册表中的设置和值的列表52)GetAttr:返回表示文件属性的代码53)GetObject:从文件中检索一个OLE自动化对像54)GetSetting:返回windows注册表中应用程序项的特定设置55)Hex:从十进制转换成十六进制数56)Hour:返回一天中的某一个钟点57)Iif:求出表达式的值并返回两部分之一58)Inupt:返回顺序文本文件中的字符59)InpuBox:显示一个消息框提示用户输入信息60)InStr 返回字符串在另一个符串中的位置61)InstRev从字符串的末尾开始算起,返回字符串在另一个字符串中的位置62)Int:返回一个数的整数部分63)IPmt:返回在一段时间内对年金所支付的利息值64)IRR:返回一系列周期性现金流的内部利率65)IsArray 如果变量是一个数组,就返回TRUE66)IsDate 如果变量是一个日期,就返回TRUE67)IsEmpty 如果没有初始变量,就返回TRUE68)IsError:如果变量是一个错误值,就返回TRUE69)IsMissing:如果没有向过程传递可选的参数,就返回TRUE70)IsNull:如果表达式包含一个NULL值,就返回TRUE71)InNumeric:如果表达式是一个数值,就返回TRUE72)IsObjec:如果表达式引用了OLE自动化对象,就返回TRUE73)Join:将包含在数组中的字符串连接起来74)LBound返回数组维可用的最小下标75)Lcase:返回转换为小写字母的字符串76)Left:从字符串左边开始算起,返回指定数量的字符77)Len:返回字符串中的字符数量78)Loc 返回当前读或写文本文件的位置79)Lof:返回打开文本中的字节数80)Log:返回一个数的自然对数81)LTrim:返回不带前导空格的字符串的副本82)Mid:返回字符串中指定数量的字符83)Minute:返回一小时中的某分钟84)MIRR:返回一系列修改过的周期性现金流的内部利率85)Month:返回一年中的某个月份86)MonthName:作为字符串返回某个月份87)MsgBox:显示模态消息框88)Now:返回当前的系统日期和时间89)NPer:返回年金总期数90)NPV 返回投资净现值91)Oct:从十进制转换成八进制92)Partition:返回代表值写入的单元格区域的字符串93)Pmt 返回年金支付额94)Ppmt 返回年金的本金的偿还额95)PV:返回年金现值96)QBcolor:返回红绿蓝颜色码97)Rate :返回每一期的年金利率98)Replace:返回其中的子字符串被另一字符串取代的字符串99)RGB 返回代表RGB颜色的数值100)Right:从字符串的右边开始算起,返回字符串指定的数量的字符101)Rnd:返回0-1之间的某一个随机数102)Round:返回取整后的数值103)RTrim:返回不带尾随空格的字符串的副本104)Second:返回特定时间的秒部分的值105)Seek 返回当前文本文件中的位置106)Sgn 返回一个数正负号的整数,107)Shell:运行可执行程序108)Sin 返回一个数的正弦值109)SLN:返回一期里一项资产的直线折旧110)Space:返回带指定空格数的字符串111)Spc :当打印某个文件时定位输出112)Split:返回一个包含指定数目的子字符串的一维数组113)Sqr:返回一个数的平方根114)Str:返回代表一个数值的字符串115)StrComp:返回指示字符串比较结果的值116)CtrConv :返回转换后的字符串117)String:返回重复的字符或者字符串118)StrReverse:返回顺序反向的字符串119)Switc 求出一列BOOLEAN表达式的值,返回与第一个为TRUE的表达式关联的值120)SYD :返回某项资产在指定期间用年数总计法计算的折旧121)Tab :当打印文件时定位输出122)Tan:返回数值的正切值123)Time 返回当前的系统时间124)Timer:返回从午夜开始到现在经过的秒数125)TimeSerial:返回具有特定时、分和秒的时间126)TimeValue:将字符串转换成时间序列号127)Trim:返回不带前导空格和/或尾随空格的字符串128)TypeName:返回描述变量数据类型的字符串129)Ubound:返回数组维可用的最大下标130)UCase:将字符串转换成大写字母131)Val:返回包含字符串内的数字132)VarType:返回指示变量子类型的值133)WeekDay:返回代表一周内的星期几的字符串134)Year:返回年份。
Excel-VBA基础语法

Excel-VBA基础语法VBA简介、数据类型、变量、数组、运算符、内置函数、过程与函数⼀、VBA介绍1、宏和VBA的关系 vba是编程语⾔,宏是⽤vba代码保存下来的程序。
录制的宏是vba⾥最简单的程序,正因为如此,录制宏存在许多缺陷:如⽆法进⾏判断和循环,不能显⽰⽤户窗体,不能进⾏⼈机交互…… 解决录制宏的这些问题,需要掌握vbs编程的⽅法,⾃主的编写vba程序。
2、VBA程序结构代码:vba程序由代码组成。
过程:例如Sub过程、Function过程模块:保存过程的地⽅,⼀个模块可以保存多个不同类型的过程对象:⽤代码操作或控制的东西即为对象,例如⼯作簿、⼯作表、单元格、图⽚、图表、透视表等对象的属性:每个对象都有属性,属性是对象包含的内容或特点,例如A1单元格的内容:A1.内容,代码表达为Range("A1).Value对象的⽅法:⽅法是指在对象上执⾏的某个动作,例如Range("A1").Select关键字:关键字是vba中的保留字或符号,例如语句名称、函数名称、运算符等都是关键字3、VBE介绍 VBE即Visual Basic Editor即VBA的编程环境 1)打开VBE编辑器 Alt+F11(Alt+F8是查看宏) 依次执⾏:(2003版本)⼯具——宏——Visual Basic编辑器,(2007以上版本)在“视图”下的“宏”选项卡下 右键单击⼯作表标签,执⾏“查看代码”命令 2)主窗⼝:包含“⼯程资源管理器”、“属性窗⼝”、“菜单栏”、“⼯具栏”、“代码窗⼝”、“⽴即窗⼝” 3)菜单栏:包含VBE中各种组件的命令 4)⼯具栏:可以在“视图”——“⼯具栏”菜单⾥显⽰或隐藏 5)⼯程资源管理器:在这⾥可以看到所有打开的Excel⼯作簿和已加载的宏,⼀个Excel的⼯作簿就是⼀个⼯程,⼯程名称为“VBA Project(⼯作簿名称)”,这⾥最多可以显⽰⼯程⾥的4类对象,即Excel对象(包括sheet对象和ThisWorkbook对象)、窗体对象、模块对象和类模块对象。
vba 自定义函数说明

vba 自定义函数说明函数定义VBA定义的函数可以在工作表使用,如果是在加载插件中定义函数,本机所有打开工作簿都可以使用该函数,当然可以在过程sub中调用函数;VBA函数与sub过程不同的是,函数有返回内容;过程和函数都可以传入参数。
函数使用Function关键字定义,定义规则如下:Function 函数名称(形参及类型)函数主体函数名称= 函数返回End Function示例:'定义一个数值平方的函数,形参:a,形参a类型:long,函数返回:a ^ 2;函数名称:testFunction test(a as long)test = a ^ 2End Function'定义全局函数,使用public关键字,这个关键字跟变量定义是一致的。
后面跟的as long是返回类型Public Function test(a as long) as longtest = a ^ 2End Function传值和传引用函数或方法传值使用关键字ByVal,传引用使用关键字ByRefSub num_print()Dim i, num As Long ' 定义一个变量num = 0For i = 1 To 10s = add(num) ' 调用add函数sDebug.Print num ' 函数参数是传引用,会依次打印1,2,3,,,,10NextEnd SubFunction add(ByRef a As Variant)a = a + 1End Function如果上述函数参数为传值ByVal,则函数不影响方法num_print中变量num的改变,全打印0;函数返回对象函数也可以返回对象,返回对象要使用set关键字;示例:返回字典Function aa()Dim d As ObjectSet d = CreateObject("scripting.dictionary")today = Datethe_month_date = CDate(Year(Date) & "-" & Month(Date)& "-" & 20) '这个月的20号last_month_date =Application.WorksheetFunction.EDate(the_month_date, -1) '上个月的20号d("today") = todayd("the_month_date") = the_month_dated("last_month_date") = last_month_dated("the_month") = Month(last_month_date) '这个月d("last_month") =Month(Date) '上个月Set aa = d '返回对象使用set关键字End Function'函数调用sub test1()dim d1 as objectset d1 = aa()debug.print d1("today") '打印字典键today对应的值end sub使用默认参数函数传入参数格式:形参 as 参数类型 = 参数默认值示例:正则提取函数Function regexp(rg As Variant, str As String, Optional mat As Byte = 0, Optional group As Variant = Empty)'Optional表示参数不是必需的关键字。
VBA语言速查手册

V B A语言基础简介(VisualBasicApplication)这里只做一些vba最基本的介绍,很多函数,过程的具体使用不可能一一说明,同学们参考vba函数速查手册第一节标识符一.定义标识符是一种标识变量、常量、过程、函数、类等语言构成单位的符号,利用它可以完成对变量、常量、过程、函数、类等的引用。
二.命名规则1)字母打头,由字母、数字和下划线组成,如A987b_23Abc2)字符长度小于403)不能与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 自定义数据类型。
第四节变量与常量1)VBA允许使用未定义的变量,默认是变体变量。
2)在模块通用说明部份,加入OptionExplicit语句可以强迫用户进行变量定义。
3)变量定义语句及变量作用域Dim变量as类型'定义为局部变量,如Dim xyzasintegerPrivate变量as类型'定义为私有变量,如Private xyzasbytePublic变量as类型'定义为公有变量,如Public xyzassingleGlobal变量as类型'定义为全局变量,如Globlal xyzasdateStatic变量as类型'定义为静态变量,如Static xyzasdouble一般变量作用域的原则是,那部份定义就在那部份起作用,模块中定义则在该模块那作用。
vba 模块之间调用函数的方法

vba 模块之间调用函数的方法VBA是Visual Basic for Applications的简称,是一种用于编写宏的编程语言。
在VBA中,模块之间的函数调用是实现代码重用和模块化编程的重要方式之一。
本文将介绍几种常用的VBA模块之间调用函数的方法。
一、直接调用函数在VBA中,模块之间可以直接调用函数。
需要调用的函数必须是公共的,即使用Public关键字声明的函数。
例如,在模块A中定义了一个名为Add的函数:Public Function Add(a As Integer, b As Integer) As IntegerAdd = a + bEnd Function在模块B中,可以直接调用模块A中的函数Add,并使用其返回值进行后续操作:Sub Test()Dim result As Integerresult = Add(2, 3)MsgBox resultEnd Sub二、通过引用模块调用函数除了直接调用函数外,还可以通过引用模块的方式来调用函数。
首先,在模块A中定义一个名为Math的模块,将Add函数放入该模块中:Public Function Add(a As Integer, b As Integer) As IntegerAdd = a + bEnd Function在模块B中,使用关键字"Call"来引用模块A,并通过模块名和函数名来调用函数:Sub Test()Dim result As Integerresult = Math.Add(2, 3)MsgBox resultEnd Sub通过引用模块的方式可以更加清晰地表达函数的来源,也方便维护和管理。
三、使用Application.Run方法调用函数另一种调用函数的方式是使用Application对象的Run方法。
在模块A中定义了一个名为Add的函数:Public Function Add(a As Integer, b As Integer) As IntegerAdd = a + bEnd Function在模块B中,可以使用Application.Run方法来调用模块A中的函数Add:Sub Test()Dim result As Integerresult = Application.Run("Add", 2, 3)MsgBox resultEnd Sub使用Application.Run方法可以动态地调用函数,可以根据需要在运行时确定要调用的函数名。
vba的三种基本结构

vba的三种基本结构VBA(Visual Basic for Applications)是一种在Microsoft Office应用程序中使用的编程语言。
它可以帮助用户自定义和自动化各种任务,从简单的数据处理到复杂的应用程序开发。
VBA的三种基本结构是模块、过程和对象。
下面将详细介绍这三种结构。
一、模块模块是VBA代码的容器,可以将相关代码组织在一起以便于管理和重用。
VBA中有两种类型的模块:标准模块和类模块。
1. 标准模块:标准模块是最常用的一种模块类型,它包含了一系列子过程(Sub)和函数(Function)。
子过程是一段执行特定任务的代码,而函数则返回一个值。
标准模块中的代码可以通过调用子过程或函数来执行。
2. 类模块:类模块用于创建自定义对象,并定义该对象所具有的属性、方法和事件。
类模块允许用户根据自己的需求创建具有特定功能和行为的对象,从而实现更高级别的编程。
二、过程过程是VBA代码执行的基本单位,它可以包含一系列语句来完成特定任务。
VBA中有两种类型的过程:子过程和函数。
1. 子过程:子过程是不返回值或返回值类型为Void的过程。
它可以执行一系列操作,例如处理数据、显示消息框、打开文件等。
子过程通常通过调用来执行。
2. 函数:函数是返回一个值的过程。
它可以接受参数并根据这些参数进行计算,然后返回结果。
函数在VBA中被广泛用于处理数据和执行复杂的计算。
三、对象对象是VBA编程中的核心概念之一,它代表了程序中的各个元素,如工作表、单元格、图表等。
通过操作对象,可以实现对应元素的增删改查等操作。
1. 内置对象:VBA提供了许多内置对象,如Application、Workbook、Worksheet等。
这些对象代表了Excel应用程序及其组件,并提供了许多属性和方法来操作和控制这些组件。
2. 自定义对象:除了内置对象外,VBA还允许用户创建自定义对象。
自定义对象允许用户根据需要定义特定属性和方法,并通过实例化该对象来使用它们。
模块和VBA程序设计

在模块中编写代码时,可以使用调试工具来检查代码中的错误和异常,确保代码的正确性和稳定性。 调试工具包括断点、单步执行、变量监视等。
03 VBA程序流程控制
顺序结构
顺序结构
按照代码的先后顺序执行,是最基本的程序流程结构。
描述
顺序结构按照代码的顺序逐行执行,先执行的语句先执行,后执行的语句后执 行。
VBA具有面向对象的特点,支持类、继承和多 态等特性,使得开发过程更加灵活和高效。
VBA可以用于创建宏、自定义函数、操作Excel 等Office组件,实现自动化办公和定制化功能。
VBA编程环境
01
VBA编程环境通常包括Microsoft Office应用程序(
如Excel、Word等)中的VBA编辑器。
对象
在VBA中,对象是具有属性和方法的实体。例如,Excel工作簿、工作表、单元格等都是对象。
属性
对象的属性描述了对象的特征或状态。例如,一个单元格对象的属性包括它的值、字体、背景色等。
对象的方法
• 方法:对象的方法是对象可以执行的操作。例如 ,一个单元格对象的方法可以包括设置其值、字 体或背景色等。
顺序结构
示例 ```vba Sub sequential_structure()
顺序结构
' 声明变量
Dim number As Integer
顺序结构
' 赋值
number = 10
顺序结构
'
Debug.Print "The number is " & number
顺序结构
End Sub
```
Hale Waihona Puke 选择结构• End If
VBA过程及自定义函数

VBA过程及自定义函数VBA(Visual Basic for Applications)是一种编程语言,用于扩展Microsoft Office应用程序的功能。
它可以用于自动化重复任务、添加新功能和处理数据等。
在VBA中,有两种主要的代码结构:过程和函数。
过程(Procedure)是一系列VBA代码的集合,用于执行特定的任务。
过程可以包含变量、条件语句、循环结构和其他VBA语句。
常见的过程包括子过程和主过程。
子过程(Sub Procedure)是一段独立的VBA代码块,用于执行特定的任务。
它可以由主过程调用,也可以作为事件程序在用户操作时执行。
子过程通过声明一个以Sub关键字开头的代码块来定义。
例如,下面是一个简单的子过程,用于在Excel中显示一个消息框:```Sub ShowMessageMsgBox "Hello, World!"End Sub```主过程(Main Procedure)是VBA代码的入口点,它是VBA项目中的主要代码块。
主过程可以包含调用其他子过程的代码,也可以包含其他VBA语句。
通常,在VBA项目中,主过程也是VBA代码的起点。
自定义函数(User-Defined Function)是一段VBA代码,用于返回一个值。
它类似于Excel中的公式函数,可以接受参数并计算结果。
自定义函数可以被其他VBA代码调用,在Excel中可以像内置函数一样使用。
自定义函数通过使用Function关键字和End Function语句来定义。
以下是一个简单的自定义函数示例,用于计算两个数字的和:```Function AddNumbers(ByVal x As Integer, ByVal y As Integer) As IntegerAddNumbers = x + yEnd Function```在这个例子中,我们定义了一个名为AddNumbers的函数,它接受两个整数参数x和y,并通过x + y计算它们的和。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
:VBA过程和函数
VBA过程和函数
过程是构成程序的一个模块,往往用来完成一个相对独立的功能。
过程可以使程序更清晰、更具结构性。
VBA具有四种过程:Sub过程、Function函数、Property属性过程和Event事件过程。
一.Sub过程
Sub过程的参数有两种传递方式:按值传递(ByVal)和按地址传递(ByRef)。
如下例:
Sub password (ByVal x as integer,ByRef y as integer)
If y=100 then y=x+y else y=x-y
x=x+100
End sub
Sub call_password ()
Dim x1 as integer
Dim y1 as integer
x1=12
y1=100
Call password (x1,y1)‘调用过程方式:1. Call过程名(参数1,参数
2…) ; 2.过程名参数1,参数2…
debug.print x1,y1‘结果是12、112,y1按地址传递改变了值,而x1按值传递,未改变原值
End sub
二.Function函数
函数实际是实现一种映射,它通过一定的映射规则,完成运算并返回结果。
参数传递也两种:按值传递(ByVal)和按地址传递(ByRef)。
如下例:Function password(ByVal x as integer, byref y as integer) as boolean If y=100 then y=x+y else y=x-y
x=x+100
if y=150 then password=true else password=false
End Function
Sub call_password ()
Dim x1 as integer
Dim y1 as integer
x1=12
y1=100
if password then‘调用函数:1.作为一个表达式放在=右端; 2.作为参
数使用
debug.print x1
end if
End sub
三.Property属性过程和Event事件过程
这是VB在对象功能上添加的两个过程,与对象特征密切相关,也是VBA比较重要组成,技术比较复杂,可以参考相关书籍。
上。