ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:24.55KB ,
资源ID:10813387      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10813387.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(VBA语法基础上下.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

VBA语法基础上下.docx

1、VBA语法基础上下VBA语法基础(上)- - - - - - - - - - - - - - - - - -数据类型“数据类型”是指如何将数据存储在内存中。(1)Boolean表示逻辑数据,可以是True或False中的任一个值。占用2字节的存储空间,取值范围为True或False,缺省值为False。(2)Byte只能表示正数。占用1字节的存储空间,取值范围为0-255,缺省值为0。(3)Currency一种保存货币值数据的特殊数字格式。占用8字节的存储空间,取值范围为-922337203685477.5808-922337203685477.5807,缺省值为0。(4)Date一种用于表示

2、日期或时间的专用格式。占用8字节的存储空间,取值范围为100年1月1日9999年12月31日,缺省值为00:00:00。(有关在VBA中使用日期和时间的详细介绍请见后面的一系列文章。)(5)Decimal一种包含以10的幂为刻度的十进制数的变体子类型,只能通过CDec转换函数创建,不是一种独立的数据类型。占用14字节的存储空间,取值范围为79228162514264337593543950335(不带小数点)或7.9228162514264337593543950335(带28位小数点),缺省值为0。(Decimal数据类型是在Excel 2000中引入的,在以前的版本中不能使用这种数据类型。

3、该数据类型非常特殊,因为不能实际声明它,它是Variant的子类型,必须使用CDec函数将一个变量转换为Decimal数据类型)(6)Double存储双精度浮点数,占用8字节的存储空间,取值范围为负值:-1.79769313486232E3084.94065645841247E-324,正值:1.79769313486232E3084.94065645841247E-324,缺省值为0。(7)Integer表示从-32768-32767之间的整数,其中一位表示符号,占用2字节的存储空间,缺省值为0。(8)Long表示存储为4个字节空间的带符号的数,其中一位表示符号,取值范围为-21474836

4、48-2147483647,缺省值为0。(9)Object包含对某个对象的引用(地址),占用4字节的存储空间,可对任何对象引用,缺省值为Nothing。(10)Single表示分数、带小数位或指数的数值等单精度数,占用4字节的存储空间,取值范围为负值:-3.402823E381.401298E-45,正值:1.401298E-453.402823E38,缺省值为0。(11)String可声明定长和变长的String数据类型。其中,定长的String数据类型占用的存储空间为字符串的长度,取值范围为165400个字符,缺省值等于该字符串长度的空格数。变长的String数据类型能动态地加长或缩短以存

5、储要求的字符串数,占用的存储空间为10字节加上字符串的长度,取值范围为020亿个字符,缺省值为零长字符串(“”)。(有关String数据类型及处理和操作字符串数据的VBA内置函数的详细介绍请见后面的一系列文章。)(12)VariantVariant字符串类型的存储空间为22字节加上字符串的长度,其取值范围与变长字符串数据类型的取值范围相同,缺省值为Empty。Variant数字型的存储空间为16字节,其取值范围与Double数据类型的取值范围相同,缺省值为Empty。(有关Variant数据类型的进一步介绍见后面的一系列文章。)(13)用户自定义类型允许用户创建一种特殊的数据类型,这种数据类型

6、由VBA的内部数据类型、数组、对象或其他用户定义类型组成,其存储空间为各个组成部分的存储空间的总和,取值范围与各个组成部分的数据类型的取值范围一致,缺省值为各个组成部分的缺省值。(有关用户自定义类型的进一步介绍请见后面的一系列文章。)各数据类型之间也可以相互转换。(有关数据类型转换的详细介绍请见后面的一系列文章)(有关数字数据类型(Byte、Integer、Long、Single、Double、Currency、Decimal、Variant)及相应的VBA内置函数的详细介绍请见后面的一系列文章。)- - - - - - - - - - - - - - - - - -常量(数)常量即在程序执行

7、过程中不发生改变的值或字符串。使用Const语句声明常量。如:Const Rate=0.25Const NumMonths As Integer=12Public Const myName As String=”BabyPig”而最后一个语句声明了一个公共常量,应放在模块中所有过程之前声明。VBA自身包含有许多内置常数,它们的值都是VBA预先定义好的,使用内部常数时无需定义这些常数的值。 几个特殊的常数由于有好几种不相同的“无效值”常数,VBA语言提供了好几种方法,以检验某个变量是否为empty或null值,或者设置某个变量为empty或null值。(1) vbNull和VarType函数一起

8、使用,用于确定变量是否包含null。(2) vbNullChar赋值或检测null字符,null字符的值为Chr(0),即vbNullChar常数相当于将变量赋值为Chr(0),可用于检测变量,确定它的值是否是一个null字符。(3) vbNullString赋值或检测零长(空)字符串。(4) Null关键字将null值赋给variant变量后,可以通过调用IsNull函数来检测变量是否是Null值。(5) vbEmpty检测某个variant变量是否初始化。(6) Nothing关键字只能和对象变量一起使用,以确定变量是否具有有效的对象引用,此外,Nothing关键字还可以用于销毁当前的对象

9、引用。(关于常量的介绍还可见ExcelVBA编程系列之数据类型(1):常量)- - - - - - - - - - - - - - - - - -变量变量的主要作用是存取数据、提供了数据存放信息的容器。根据变量的作用域不同,可分为局部变量、全局变量,见后面的变量(常量)作用域和生存期介绍。变量命名要注意以下几点:1、有效性。变量以字母开头,中间可以出现数字和一些标点符号,除下划线( _ )作为连字符外,变量名称不能有空格、加号(+)、减号(-)、逗号(,)、句点(.)等符号。2、VBA不区分大小写。但在变量命名时,最好体现该变量的作用3、不能使用VBA中的关键字作为变量。4、变量名称中不能有特

10、殊类型的声明字符(#、$、%、&或!)。5、变量名称最多可以包含254个字符。(有关VBA的命名规则的详细介绍请见后面的一系列文章)- - - - - - - - - - - - - - - - - -声明变量其语法为:Dim As 或:Private As 或:Public As 可以在一行中声明多个变量,每个变量之间用逗号分隔开。还有一种声明变量的方法是,将一个字符加在变量名称后面,从而声明变量的数据类型。如Dim MyVar%表示将变量MyVar声明为整型。一些类型声明符为:数据类型 类型声明字符Integer %Long &Single !Double #Currency String

11、$在模块前加入Option Explicit语句,将强制声明所使用的所有变量。- - - - - - - - - - - - - - - - - -对象变量在使用对象模型的属性、方法和事件之前,必须创建一个对包含所需属性、方法和事件的类的引用。可以先声明一个局部对象变量以存储该对象引用,然后把对象引用赋给该局部变量。声明对象变量的方法和声明其他类型的变量基本上一样。有三种声明对象变量的方法:(1) Dim myObject As .此方法指向类的类型库,但没有给该变量赋予任何类的实例。此时,变量myObject被赋值为Nothing。若要用这种方式引用类,就必须利用“引用”对话框向工程添加一个

12、对类模块的引用。若要将类的实例引用赋予该变量,必须在使用该变量之前用Set语句赋值。如:Set myObject=.(2) Dim myObject As New .此方法将类的新实例引用赋给Object变量。同样,要用这种方式引用类,必须先利用“引用”对话框向工程添加一个对类模块的引用。(3) Dim myObject As Object此方法将myObject变量声明为一般的Object数据类型,这在不能预先知道要创建的对象的数据类型时十分有用。此时,Object变量被赋值为Nothing。若要将对象引用赋值给该变量,必须使用CreateObject函数或GetObject函数。可以用Pr

13、ivate或Public语句替换Dim语句,且对象变量的作用域规则和其他类型的变量一样。声明对象变量可以显著地简化代码且加快代码的执行速度。有关对象模型的基础知识见ExcelVBA编程系列之对象模型(2):初步理解和使用Excel对象模型一文。- - - - - - - - - - - - - - - - - -集合(Collection)对象集合对象是其他对象的一个容器。一般有四个方法:(1) Add方法添加一项到集合中。除了可以指定数据外还可以指定键值,通过键值可以访问集合中的成员。(2) Count方法返回集合中的项的个数。(3) Item方法通过集合中的索引(即集合中项的序号)或键(假

14、设该项添加到集合时指定了)检索集合中的成员。(4) Remove方法通过集合中的索引或键删除集合中的成员。可以使用WithEnd With构造和For Each Next构造很方便地处理对象和集合,其介绍可参见ExcelVBA编程系列之对象模型(2):初步理解和使用Excel对象模型一文。- - - - - - - - - - - - - - - - - -运算符运算符是用于完成操作的一系列符号,包括算术运算符、比较运算符、逻辑运算符、字符串运算符等。可用于连接一个或多个语言元素,或者完成一些运算以形成一个表达式。- - - - - - - - - - - - - - - - - -表达式表达

15、式就是变量、常量、运算符的集合,可分为算术表达式、字符串表达式、赋值表达式、布尔表达式等详细的内容请见VBA编程系列:运算符和表达式。- - - - - - - - - - - - - - - - - -数组数组是一组拥有相同名称同类元素。定义数组后,即创建了数组。数组中单个的数据项称为数组元素,用于访问数组元素的编号称为数组索引号,最小索引号和最大索引号称为边界。在VBA中,根据数组元素是否变化,分为固定大小的数组和动态数组,根据数组的维数又可分为一维数组和多维数组。1、创建数组用Dim语句来定义固定大小的数组,即声明一个数组。如Dim myArray(9) As Integer上面的代码创

16、建一个名为myArray含有10个数组元素的一维数组。注意,所有VBA数组的下界均从0开始,因此上面的代码所创建的数组元素从myArray(0)到myArray(9)。在Dim语句中不指明数组元素的个数来声明动态数组,如Dim myDynamicArray() As Integer使用ReDim关键字重新定义数组的大小:ReDim myDynamicArray(10)也可以用ReDim关键字同时声明一个动态数组并指定该数组的元素个数:ReDim myDynamicArray(5) As IntegerVBA没有限制重新定义动态数组大小的次数,但在重新定义数组大小时,原有的数组数据就会丢失。如果

17、需要保留原来的数据,可以使用Preserve关键字:ReDim Preserve myDynamicArray(5)需要注意的是,如果重新定义数组时减小了数组的大小,则会丢失被缩减了的那部分元素的数据。当然,与声明变量一样,也可以用Public语句声明公共数组。2、确定数组的边界可以使用UBound函数和LBound函数分别获取数组的最大边界和最小边界。默认情况下,VBA的数组的下界是从0开始的,可以在模块的声明部分使用Option Base语句来改变模块中数组的起始边界。如Option Base 1该语句使数组元素的索引号从1开始。也可以在定义数组时指定数组的上界和下界,如Dim ( to

18、) As 3、多维数组多维数组可以在每个数组元素中存储一组数据,因此,多维数组的每个数组元素都包含一个数组。与一维数组相同,可以使用下面的两种方法创建多维数组:(1)Dim (,) As (2)Dim ( to , to ,) As 与一维数组相似,多维数组也可以是动态的。4、引用数组中的元素可以使用数组名称和一个索引号来引用数组中的某个特定的元素。(有关数组的进一步介绍及其应用请见后面的一系列文章)- - - - - - - - - - - - - - - - - -内置函数VBA中包含各种内置函数,可以简化计算和操作。在VBA表达式中使用函数的方式与使用工作表公式中函数的方式相同。在VBA

19、代码中,也可以使用很多Excel工作表函数,即使用WorksheetFunction对象调用工作表函数。但是不能使用具有与VBA内置函数功能相同的工作表函数。(有关内置函数的进一步介绍及应用请见后面的一系列文章)VBA语法基础(下)- - - - - - - - - - - - - - - - - - - -基本语句1、控制程序流程语句(1) GoTo语句该语句将执行的程序转到指定的标签所在的语句指令,但不能转移到过程之外的指令。例如,在进行错误捕捉时,发生错误后,程序转移至标签所在处执行。(2) IfThen语句这种类型的语句用于条件判断中,当满足条件时,执行相应的语句;当条件不满足时,执行

20、其它的操作。基本语法为:If Then If Then语句有几种形式分别用于不同的情况:当只有一个条件时,可使用下面的结构:If Then Else 其中,Else子句可选。如果该语句不在同一行中,则应在后面加上End If语句,即:If Then 指令End If或:If Then 指令Else 指令End If当条件为真时,执行Then后面的语句并结束IfThen语句的执行,否则执行Else后面的语句或结束IfThen语句的执行。当有两个或多个条件时,可使用嵌套的If Then 结构:If Then 指令ElseIf Then 指令Else 指令End If上面只是两层嵌套,可以根据情况使

21、用多层嵌套。当条件为真时,执行Then后面的语句并结束IfThen语句的执行,否则判断条件1,当条件1为真时,执行Then后面的语句并结束IfThen语句的执行,否则执行Else后面的指令。(3) Select Case语句当需要作出三种或三种以上的条件判断时,最后使用Select Case语句。其基本语法为:Select Case Case 条件表达式1 指令 Case 条件表达式2 指令 Case Else 指令End Select当某个条件表达式与测试表达式相匹配时,则执行其后的指令,否则执行Else(如果有的话)后的指令,然后结束Select Case块的执行。此外,Select Ca

22、se语句还可以嵌套。(有关程序控制语句的进一步介绍和示例请见后面的一系列文章)2、循环语句循环即重复执行某段代码。在VBA中,有多种可以构成循环的语句结构。(1) For Next 循环其语法如下:For To step 步长 指令 Exit For 指令Next 计数器从开始到结束,反复执行For和Next之间的指令块,除非遇到Exit For语句,将提前跳出循环。其中,步长和Exit For语句以及Next后的计数器均为可选项。ForNext循环中可以再包含ForNext循环,即ForNext循环可以嵌套使用。(2) Do While循环只有在满足指定的条件时才执行Do While循环。有

23、两种形式: 第一种形式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当条件满足时,则执行

24、指令。(有关循环语句的进一步介绍和示例请见后面的一系列文章)- - - - - - - - - - - - - - - - - - - -过程过程由一组完成所要求操作任务的VBA语句组成。子过程不返回值,因此,不能作为参数的组成部分。其语法为:Private|Public Static Sub (参数) 指令 Exit Sub 指令End Sub说明:(1) Private为可选。如果使用Private声明过程,则该过程只能被同一个模块中的其它过程访问。(2) Public为可选。如果使用Public声明过程,则表明该过程可以被工作簿中的所有其它过程访问。但是如果用在包含Option Priv

25、ate Module语句的模块中,则该过程只能用于所在工程中的其它过程。(3) Static为可选。如果使用Static声明过程,则该过程中的所有变量为静态变量,其值将保存。(4) Sub为必需。表示过程开始。(5) 为必需。可以使用任意有效的过程名称,其命名规则通常与变量的命名规则相同。(6) 参数为可选。代表一系列变量并用逗号分隔,这些变量接受传递到过程中的参数值。如果没有参数,则为空括号。(7) Exit Sub为可选。表示在过程结束之前,提前退出过程。(8) End Sub为必需。表示过程结束。如果在类模块中编写子过程并把它声明为Public,它将成为该类的方法。(关于过程的详细介绍和

26、示例见后面的一系列文章)- - - - - - - - - - - - - - - - - - - -函数函数(function)是能完成特定任务的相关语句和表达式的集合。当函数执行完毕时,它会向调用它的语句返回一个值。如果不显示指定函数的返回值类型,就返回缺省的数据类型值。声明函数的语法为:Private|Public Static Function (参数) As 类型 指令 函数名=表达式 Exit Function 指令 函数名=表达式End Function说明:(1) Private为可选。如果使用Private声明函数,则该函数只能被同一个模块中的其它过程访问。(2) Publi

27、c为可选。如果使用Public声明函数,则表明该函数可以被所有Excel VBA工程中的所有其它过程访问。不声明函数过程的作用域时,默认的作用域为Public。(3) Static为可选。如果使用Static声明函数,则在调用时,该函数过程中的所有变量均保持不变。(4) Function为必需。表示函数过程开始。(5) 为必需。可以使用任意有效的函数名称,其命名规则与变量的命名规则相同。(6) 参数为可选。代表一系列变量并用逗号分隔,这些变量是传递给函数过程的参数值。参数必须用括号括起来。(7) 类型为可选。指定函数过程返回的数据类型。(8) Exit Function为可选。表示在函数过程结

28、束之前,提前退出过程。(9) End Function为必需。表示函数过程结束。通常,在函数过程执行结束前给函数名赋值。函数可以作为参数的组成部分。但是,函数只返回一个值,它不能执行与对象有关的动作。如果在类模块中编写自定义函数并将该函数的作用域声明为Public,这个函数将成为该类的方法。(关于Function过程的详细介绍和示例见后面的一系列文章)- - - - - - - - - - - - - - - - - - - -事件处理过程要对一个控件事件编写事件处理程序,应先打开窗体的代码窗口并从可用对象的下拉列表中选择所需的控件。然后,从该控件的可用事件下拉列表中选择所用的事件。此时,对事

29、件处理程序的定义语句就会自动出现在代码窗口中,就可以直接编写事件处理程序了。在Excel中,有下面几类事件,即Excel应用程序事件、工作簿事件、工作表事件、图表事件、用户窗体事件等。(关于Excel中事件处理的介绍请见后面的一系列文章)- - - - - - - - - - - - - - - - - - - -类模块类模块是存放共享变量以及共享代码的存储库。创建一个类模块,实际上也是在创建一个COM(组件对象模型)接口。因此,类模块允许通过一个由属性、方法和事件组成的可编程接口向外界描述应用程序,同时保证保留对应用程序的控制权。也就是说,类模块能够让程序实现“封装”,这样,在其它工程中可以直接使用某类模块而不需要访问源代码。此外,可以使用类来创建自已的库,如果要使用的话,只需要在任何新的工程中添加一个对该类的引用就行了。并且,如果要改变程序,只需对类模块改动就行了,而不需要在程序的每个部分都作改动。(有关类模块知识的详细介绍请见后面的一系列文章)- - - - - - - - -

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1