VBA基础语法.doc_第1页
VBA基础语法.doc_第2页
VBA基础语法.doc_第3页
VBA基础语法.doc_第4页
VBA基础语法.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、标识符:字母开都,字母、数字和下划线组成。如 A5678_9876HJ,小于40个字符,Excel2002以上中文版等,可以用汉字且长度可达254个字符。2、运算符:(1)赋值运算符 =(2)数学运算符: &、+ (字符连接符)、+(加)、-(减)、*(乘)、/(除)、Mod(取余)、(整除)、-(负号)、(指数)(3)逻辑运算符:Not(非)、And(与)、Or(或)、Xor(异或)、Eqv(相等)、Imp(隐含)(4)关系运算符: = (相等)、(不等)、(大于)、=(不小于)、=(不大于)、Like、Is(5)位运算符 Not(逻辑非)、And(逻辑与)、Or(逻辑或)、Xor(逻辑异或)、Eqv(逻辑等)、Imp(隐含)3、数据类型:VBA共有12种数据类型,具体见下表,此外用户还可以根据以下类型用Type自定义数据类型。数据类型 类型标识符 字节 字符串型 String $ 字符长度(0-65400) 字节型 Byte 无 1 布尔型 Boolean 无 2 整数型 Integer % 2 长整数型 Long & 4 单精度型 Single ! 4 双精度型 Double # 8 日期型 Date 无 8 公元100/1/1-9999/12/31 货币型 Currency 8 小数点型 Decimal 无 14 变体型 Variant 无 以上任意类型,可变 对象型 Object 无 4 4、变量与常量(1)VBA允许使用未定义的变量,默认是变体变量Variant。(2)在模块通用说明部份,加入 Option Explicit 语句可以强迫用户进行变量定义。(3)变量定义语句及变量作用域Dim 变量 as 类型 定义为局部变量 如 Dim xyz as integer Private 变量 as 类型 定义为私有变量 如 Private xyz as byte Public 变量 as 类型 定义为公有变量 如 Public xyz as single Global 变量 as 类型 定义为全局变量 如 Globlal xyz as date Static 变量 as 类型 定义为静态变量 如 Static xyz as double 一般变量作用域的原则是,那部份定义就在那部份起作用,模块中定义则在该模块那作用。(4)常量为变量的一种特例,用Const定义,且定义时赋值,程序中不能改变值,作用域也如同变量作用域。 如下定义:Const Pi=3.1415926 as single5、数组 在内存中表现为一个连续的内存块,必须用Global或Dim语句来定义。定义规则如下: Dim 数组名(lower to upper , lower to upper, .) as type ;Lower缺省值为0。二维数组是按行列排列,如XYZ(行,列)。 除了以上固定数组外,VBA还有一种功能强大的动态数组,定义时无大小维数声明;在程序中再利用Redim语句来重新改变数组大小,原来数组内容可以通过加preserve关键字来保留。如下例:Dim array1() as double : Redim array1(5) : array1(3)=250 : Redim preserve array1(5,10)6、注释注释语句是用来说明程序中某些语句的功能和作用;VBA中有两种方法标识为注释语句。单引号 ;如:定义全局变量;可以位于别的语句之尾,也可单独一行Rem ;如:Rem 定义全局变量;只能单独一行。基本语句1、控制程序流程语句(1) GoTo语句该语句将执行的程序转到指定的标签所在的语句指令,但不能转移到过程之外的指令。例如,在进行错误捕捉时,发生错误后,程序转移至标签所在处执行。(2) IfThen语句这种类型的语句用于条件判断中,当满足条件时,执行相应的语句;当条件不满足时,执行其它的操作。基本语法为:If ThenIf Then语句有几种形式分别用于不同的情况:当只有一个条件时,可使用下面的结构:If Then Else 其中,Else子句可选。如果该语句不在同一行中,则应在后面加上EndIf语句,即:If Then 指令End If或:If Then 指令Else 指令End If当条件为真时,执行Then后面的语句并结束IfThen语句的执行,否则执行Else后面的语句或结束IfThen语句的执行。当有两个或多个条件时,可使用嵌套的If Then 结构:If Then 指令ElseIf Then 指令Else 指令End If上面只是两层嵌套,可以根据情况使用多层嵌套。当条件为真时,执行Then后面的语句并结束IfThen语句的执行,否则判断条件1,当条件1为真时,执行Then后面的语句并结束IfThen语句的执行,否则执行Else后面的指令。(3) Select Case语句当需要作出三种或三种以上的条件判断时,最后使用SelectCase语句。其基本语法为:Select Case Case 条件表达式1指令 Case 条件表达式2指令 Case Else指令End Select当某个条件表达式与测试表达式相匹配时,则执行其后的指令,否则执行Else(如果有的话)后的指令,然后结束SelectCase块的执行。此外,Select Case语句还可以嵌套。2、循环语句循环即重复执行某段代码。在VBA中,有多种可以构成循环的语句结构。(1) For Next 循环其语法如下:For To step 步长 指令 Exit For 指令Next 计数器从开始到结束,反复执行For和Next之间的指令块,除非遇到ExitFor语句,将提前跳出循环。其中,步长和ExitFor语句以及Next后的计数器均为可选项。ForNext循环中可以再包含ForNext循环,即ForNext循环可以嵌套使用。(2) Do While循环只有在满足指定的条件时才执行Do While循环。有两种形式: 第一种形式Do While 条件 指令 Exit Do 指令Loop当条件满足时执行指令。 第二种形式Do 指令 Exit Do 指令Loop While 条件先执行指令,然后再判断条件,如果条件满足则再次执行指令。其中Exit Do语句表示提前退出指令块。(3) Do Until循环与Do While循环一样,也有两种形式; 第一种形式Do Until 条件 指令 Exit Do 指令Loop 第二种形式Do 指令 Exit Do 指令Loop Until 条件执行指令,直到条件满足时退出循环。(4) While Wend循环其语法为:While 指令Wend当条件满足时,则执行指令。- - - - - - - - - - - - - - - - - - -过程过程由一组完成所要求操作任务的VBA语句组成。子过程不返回值,因此,不能作为参数的组成部分。其语法为:Private|Public Static Sub (参数) 指令 Exit Sub 指令End Sub说明:(1)Private为可选。如果使用Private声明过程,则该过程只能被同一个模块中的其它过程访问。(2)Public为可选。如果使用Public声明过程,则表明该过程可以被工作簿中的所有其它过程访问。但是如果用在包含OptionPrivateModule语句的模块中,则该过程只能用于所在工程中的其它过程。(3)Static为可选。如果使用Static声明过程,则该过程中的所有变量为静态变量,其值将保存。(4) Sub为必需。表示过程开始。(5)为必需。可以使用任意有效的过程名称,其命名规则通常与变量的命名规则相同。(6)参数为可选。代表一系列变量并用逗号分隔,这些变量接受传递到过程中的参数值。如果没有参数,则为空括号。(7) Exit Sub为可选。表示在过程结束之前,提前退出过程。(8) End Sub为必需。表示过程结束。如果在类模块中编写子过程并把它声明为Public,它将成为该类的方法。- - - - - - - - - - - - - - - - - - -函数函数(function)是能完成特定任务的相关语句和表达式的集合。当函数执行完毕时,它会向调用它的语句返回一个值。如果不显示指定函数的返回值类型,就返回缺省的数据类型值。声明函数的语法为:Private|Public Static Function (参数) As 类型 指令 函数名=表达式 Exit Function 指令 函数名=表达式End Function说明:(1)Private为可选。如果使用Private声明函数,则该函数只能被同一个模块中的其它过程访问。(2)Public为可选。如果使用Public声明函数,则表明该函数可以被所有ExcelVBA工程中的所有其它过程访问。不声明函数过程的作用域时,默认的作用域为Public。(3)Static为可选。如果使用Static声明函数,则在调用时,该函数过程中的所有变量均保持不变。(4) Function为必需。表示函数过程开始。(5)为必需。可以使用任意有效的函数名称,其命名规则与变量的命名规则相同。(6)参数为可选。代表一系列变量并用逗号分隔,这些变量是传递给函数过程的参数值。参数必须用括号括起来。(7) 类型为可选。指定函数过程返回的数据类型。(8) ExitFunction为可选。表示在函数过程结束之前,提前退出过程。(9) End Function为必需。表示函数过程结束。(10)结束之前把函数名做变量名,附上值,就是函数的返回值通常,在函数过程执行结束前给函数名赋值。函数可以作为参数的组成部分。但是,函数只返回一个值,它不能执行与对象有关的动作。如果在类模块中编写自定义函数并将该函数的作用域声明为Public,这个函数将成为该类的方法。- - - - - - - - - - - - - - - - - - -事件处理过程要对一个控件事件编写事件处理程序,应先打开窗体的代码窗口并从可用对象的下拉列表中选择所需的控件。然后,从该控件的可用事件下拉列表中选择所用的事件。此时,对事件处理程序的定义语句就会自动出现在代码窗口中,就可以直接编写事件处理程序了。在Excel中,有下面几类事件,即Excel应用程序事件、工作簿事件、工作表事件、图表事件、用户窗体事件等。- - - - - - - - - - - - - - - - - - -类模块类模块是存放共享变量以及共享代码的存储库。创建一个类模块,实际上也是在创建一个COM(组件对象模型)接口。因此,类模块允许通过一个由属性、方法和事件组成的可编程接口向外界描述应用程序,同时保证保留对应用程序的控制权。也就是说,类模块能够让程序实现“封装”,这样,在其它工程中可以直接使用某类模块而不需要访问源代码。此外,可以使用类来创建自已的库,如果要使用的话,只需要在任何新的工程中添加一个对该类的引用就行了。并且,如果要改变程序,只需对类模块改动就行了,而不需要在程序的每个部分都作改动。- - - - - - - - - - - - - - - - - - -属性过程属性过程(propertyprocedure)是特殊的过程,用于赋予和获取自定义属性的值。属性过程只能在对象模块如窗体或类模块中使用。有三种属性过程:Property Let 给属性赋值Property Get 获取属性的值Property Set 将对象引用赋给属性引用- - - - - - - - - - - - - - - - - - -调用子过程和函数过程子过程可以用下面三种方法调用。第一种使用Call语句:Call DoSomething(参数1,参数2,)如果使用Call语句,就必须用小括号将参数列表括起来。第二种是直接利用过程名:DoSomething 参数1,参数2,此时,不用在参数列表两边加上括号。如果不想使用函数的返回值,可以用上述任一种方法调用函数。否则,可以用函数名作为表达式的组成部分,如If GetFunctionResult(parameter)=1 Then如果用函数调用作为表达式的一部分,参数列表必须放在小括号中。第三种是使用Run方法。在过程间传递参数在很多情况下,需要在子过程或函数中调用另一个自定义函数或子过程,这时,在被调用过程中就要用到在调用过程中使用的某个变量。因此,可把该变量作为参数传递给被调用过程。不管被调用过程是在同一模块、同一工程中的过程,还是在远程服务器上的类中的一个方法,从一个过程向另一个过程传递变量的原理都是一样的。被调用过程(而不是调用过程)决定了变量如何从调用过程传递到被调用过程。1、VBA允许用两种不同的方式在过程和组件之间传递参数。在子过程或函数的定义部分,可以指定参数列表中的变量的传递方式:ByRef(按引用)或者ByVal(按值)。(1) ByRef这是VBA中在过程间传递变量的默认方法。ByRef是指按引用传递变量,即传递给被调用过程的是原变量的引用。因此,如果改变了被调用过程中的变量值,其变化就会反映到调用过程中的那个变量,因为它们实际上是同一个变量。(2) ByVal如果使用ByVal关键字传递变量,被调用过程获得的就是该变量的独立副本。因此,改变被庙用过程中该变量的值不会影响调用过程中该变量原来的值。2、Optional参数Optional关键字用来指定某个特定的参数并不一定要传递,即为可选参数。但是,该参数必须放在最后。3、ParamArray使用ParamArray关键字能够使过程按受一组数目可变的参数。ParamArray参数必须是参数列表中的最后一个参数,而且不能在使用了Optional关键字的参数列表中使用ParamArray参数。- - - - - - - - - - - - - - - - - - - -变量(常量)作用域和生存期有时需要在工程内的所有过程中使用某个变量,而有时某些变量又只需要在某些特定的过程中用到,变量的这种可见性称为变量作用域。变量存在和作用的时间,称为变量的生存期。变量或常数在程序中声明的位置决定了变量的作用域和生存期。总的说来,在模块的声明部分用Private关键字声明的变量可以被模块中的所有过程使用;在模块的声明部分用Public关键字声明的变量可以被整个工程使用;若某个对象引用指向某类模块,则在该类模块的声明部分用Public关键字声明的变量可以被整个工程使用;在子过程或函数中用Dim语句声明的变量只能被声明这些变量的过程使用。(1) 过程级作用域在一个过程(即子过程或函数)内声明的变量只能在该过程内使用,其生存期在执行了End Sub或End Function语句后结束。因此,可以在不同的过程中定义具有相同名称的不同变量。声明过程级作用域的变量,在过程中用Dim语句声明变量。此外,还有一种具有过程级作用域的特殊变量,称为静态变量。静态变量是在过程中定义的,尽管这种变量也具有过程级作用域,但是它

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论