学习VBA基础知识_第1页
学习VBA基础知识_第2页
学习VBA基础知识_第3页
学习VBA基础知识_第4页
学习VBA基础知识_第5页
已阅读5页,还剩103页未读 继续免费阅读

下载本文档

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

文档简介

1、 VBA (Visual Basic for Application) 是Microsoft Office系列软件的内置编程语言,其语法结构与Visual Basic编程语言互相兼容,采用的是面向对象的编程机制 和可视化的编程环境。 1.集合和对象 VBA中的应用程序是由许多对象组成的,如表、窗体、查 询等。对象是帮助构造应用程序的元素,以特定的方式组 织这些对象,就形成了应用程序 。 2.对象的属性、事件和方法 属性 属性描述了对象的自身性 质 其格式为: 对象名.属性=属性值 事件 事件是指可以发生在一个对象上且能够被该对象所识 别的动作。 如:单击某个命令按钮就产生该按钮的“单击”事件

2、当某个对象发生某一事件后,就会驱动系统去执行预先编 好的、与这一事件相对应的一段程序。 方法 方法是系 统事先设计好的,可以完成一定操作的特 殊过程,是附属于对象的行为和动作。在需要使用的时候 可以直接调用。 其格式为: 对象名.方法名 对 象 名含 义 Application代表整个Excel应用程序 Window代表窗口 Worksheet代表一个工作表 Sheets指定的或活动工作薄中所有工作表的集合 ShapeRange代表形状区域,它是文档中的一组形状 PivotTable代表工作表上的 数据透视图 Workbook代表一个Excel工作薄 Shape代表绘图层中的对象,例如自选图形

3、 Range代表某一单元格、某一行、某一列、某一区域 Name代表单元格区域的自定义名 Chart代表工作薄中的图表 FileDialog 提示文件对话框,功能和应用程序中标准“打开”和“保存”对话 框类似 CommandBarPopup代表命令栏上的一个弹出式控件 CommandBar代表容器应用程序中的一个命令栏 VBA 中的程序与函数共有种: 一般程序(Sub)、事件程序(Event)、 属性程序(Property)和函数(Function) VBA程序窗口共种: 代码窗口、立即窗口、本地窗口、 监视窗口、工程资源管理器和属性窗口 在VBE环境中编写VBA代码 工程窗口 选择对象 属性窗

4、口 选择对象 的属性 代码 窗口 选择 事件 MicrosoftExcel 插入模块 运行子过程/用户窗体 设计模式中断 重新设计工程资源管理器 对象浏览器 属性窗口 新建一个窗体并添加两个命令按钮,运行窗体后,单 击第一个按钮,显示一个消息框;单击第二个按钮,退出 当前窗体 通过此例,体会可视化编程、面向对象、事件过程、应 用方法等基本概念。 VBA使用常量、变量来存储值。用来保存在程序运行 期间数据。 常量:在程序运行中其存储的值不会改变。 变量:在程序运行中其值可以改变。 在程序运行过程中,其值不会被改变的量称为常量。在 VBA中有三类常量: 1.直接常量 如:10,20%,123.0,

5、“AB”,“VBA程序设计”等 2.符号常量 3.系统常量 指VBA系统预先定义好的,用户可以直接引用的量。 如:acForm,acQuery,vbOk,vbRed 在程序中,某个常量多次被使用,则可以使用一个 符号来代替该常量,这样不仅在书写上方便,而且有效 地改进了程序的可读性和可维护性。 VBA中使用关键字Const 声明符号常量。 其格式如下: Const 常量名 类型符号=常数表达式 如: Const PI#= 3.1415926 变量是内存中的临时单元,存放在程序执行过程中产 生的中间结果和最后输出结果。 在程序中使用变量,就要给变量定义名称及类型,即 对变量进行声明。 1.变量名

6、必须以字母或汉字开头,后可跟字母、汉字、 数字或下划线组成(不能含有小数点和空格),长度 不超过255个字符的字符串; 2.不能使用VBA中的关键字; 3.VBA中不区分变量名的大小写; 4.变量名的最后一个字符可以是%、&、!、#、$等表示 数据类型的声明符。 说明:常量名的命名规则与变量名的命名规则相同 在VBA中,数据类型用来决定变量可以保存何种数据。 VBA支持多种数据类型,为用户编程提供了方便。 用Dim或Static语句显式声明局部变量 格式:Dim 变量名 AS 类型 或 Dim 变量名类型符 语句中的“As 类型”子句是可选的。如果使用该子 句,就可以定义变量的数据类型。未使用

7、,默认变量的 类型为变体型(Variant)。 例如:Dim i As integer, s 表示声明了一个名为i的整型变量和一个名为s的变 体型变量。 Dim 声明:随过程的调用而分配存贮单元,每次调用都 对变量初始化;过程体结束,变量的内容自动消失,存 储单元释放。 Static 声明:Static 声明的变量,也称为静态变量。 静态变量在程序运行过程中一直保留其值,即每次调用 过程,变量保持原来的值。 函数函数返回类型返回类型 CByteByte CBoolBoolean CIntInteger CLngLong(长整型) CSngSingle(单精度浮点型) CDblDouble(双精

8、度浮点型) CCurCurrency(变比整数) CDecDecimal CDateDate CStrString CvarVariant Sub abc() Dim i As Integer Dim str As String i = 10 MsgBox TypeName(i) str = CStr(i) MsgBox TypeName(str) End Sub 未进行上述的声明而直接使用变量,称变量的隐式 声明采用隐式声明的变量都是变体型(Variant) 注意: VBA中允许不事先声明而直接使用变量,可以通过语 句Option Explicit,来要求所使用的变量必须事先声 明,否则VB

9、A会发出警告信息。 Private Sub Form_Click() Sum = 0 a = 10 b = 20 Sum = a + b Debug.Print Sum= & Sum End Sub 良好的编程习惯应该是“先声明变量,后使用变 量”,这样做可以提高程序的效率,同时也使程序易于 调试。VBA中可以强制显式声明,可以在窗体模块、标准 模块和类模块的通用声明段中加入语句:Option Explicit 声明而未赋值的变量的值为: n数值型变量初始化为0; n字符型变量为零长度字符串; n变体型变量初始化为 Empty; 连接运算符: 、+(字符串连接) 例如:123 + 456 结果

10、 123456 123 & 456 结果 123456 使用上 与+的区别: 例如: abcdef & 12345 结果为 abcdef12345 123 & 456 结果为 123456 abcdef + 12345 结果为 出错 123 + 456 结果为 579 将两个操作数进行大小比较,结果为逻辑值。 注意:字符串比较,则按字符的ASCII码值从左到右一一 比较,直到出现不同的字符为止。 将操作数进行逻辑运算,结果是逻辑值 例1:用人单位招聘秘书:年龄小于40岁的女性,学历专科或本科 正确的VBA表达式: 3=x And x =7 错误的VBA表达式: 3=x=7 或 3=x Or x

11、=7 年龄40,性别=“女”,(学历=“专科”,学历=“本科”) And And Or 例2:算术表达式:73 x 作作 用用关关 键键 字字 Option Compare设置字符串比较规则 StrComp比较两个字符串 StrConv字符串类型转换 Lcase、Ucase大小写变换 Space、String重复字符串 Len计算字符串长度 Format设置字符格式 Lset、Rset重排字符串 InStr、Left、Ltrim、Mid、Right Rtrim、Trim处理字符串 Split、Join拆分与连接字符串 Option Compare Binary|Text|Database Op

12、tion Compare Binary:是根据字符的内部二进制表示导出的一种排序 A-Za-z汉字 Option Compare Text:是根据系统区域确定的一种不区分大小写的一种排序 (A=a)(B=b)连接运算符关系运算符逻辑运算 函数实际上是系统事先定义好的内部程序,用来完成 特定的功能。VBA提供了大量的内部函数,供用户在编程 时使用。 函数的调用形式为: 函数名(参数表) 常用内部函数 常用内部函数,在立即窗口练习,体会函数的功能。请 参照:VBA函数参考手册 模块是自定义的过程、函数保存的地方,也是录制的宏 保存的场所。有两种基本类型的模块:类模块和标准模块。 模块可以通过右键单

13、击工程资源管理器的工程名,选择“插 入模块”来新建。新建的模块缺省的名称为“模块1”, “模块2”,建议在属性窗口内更改为有意义的名称。 模块任务: (1)保存过程和函数; (2)定义模块内的私有变量或整个工程的公有变量。 过程是最基本的运行单位 语法 Private | Public | Friend Static Sub name (arglist) statements Exit Sub statements End Sub 在以上程序中,Sub 代表过程种类,表示运行指定的操 作,但不返回运行结果; Public可选的。表示所有模块的所有其它过程都可访问这个 Sub 过程。 如 果在包

14、含 Option Private 的模块中使用,则这个过程在该工程外是 不可使用的。 Private可选的。表示只有在包含其声明的模块中的其它过程可以访问该 Sub 过程。 Friend可选的。只能在类模块中使用。表示该 Sub 过程在整个工程中都是可 见的,但对对象实例的控制者是不可见的。 Static可选的。表示在调用之间保留 Sub 过程的局部变量的值。Static 属 性对在 Sub 外声明的变量不会产生影响,即使过程中也使用了这些变 量。 name必需的。Sub 的名称;遵循标准的变量命名约定。 arglist可选的。代表在调用时要传递给 Sub 过程的参数的变量列表。多个变 量则用

15、逗号隔开。 statements可选的。Sub 过程中所执行的任何语句组。 函数是具有返回值的过程 语法 Public | Private | Friend Static Function name (arglist) As type statements name = expression Exit Function statements name = expression End Function Public 可选的。表示所有模块的所有其它过程都可访问这个 Function 过程。如果是在包 含 Option Private 的模块中使用,则这个过程在该工程外是不可使用。 Private

16、可选的。表示只有包含其声明的模块的其它过程可以访问该 Function 过程。 Friend 可选的。只能在类模块中使用。表示该 Function 过程在整个工程中都是可见的, 但对于对象实例的控制者是不可见的。 Static 可选的。表示在调用之间将保留 Function 过程的局部变量值。Static 属性对在 该 Function 外声明的变量不会产生影响,即使过程中也使用了这些变量。 name 必需的。Function 的名称;遵循标准的变量命名约定。 arglist 可选的。代表在调用时要传递给 Function 过程的参数变量列表。多个变量应用逗 号隔开。 type 可选的。Fun

17、ction 过程的返回值的数据类型,可以是 Byte、 Boolean 、Integer、 Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String (除定长)、Object、Variant或任何用户定义类型。 statements 可选的。在 Function 过程中执行的任何语句组。 expression 可选的。Function 的返回值。 v调用一个过程(Sub)时,必须键入过程名称以及任何 需要的参数值。Call语句可有可无,如果使用它,则 参数必须以括号括起来。 v调用函数(Function)时,为了使用函数的返回值, 必须指定

18、函数给变量,并且用括号将参数封闭起来。 nVBA代码不区分字母的大小写 系统保留字自动转换每个单词的首字母大写; n语句书写自由 一行可书写几句语句,之间用冒号(:)分隔; 一句语句可分若干行书写,用续行符(_)将语句分 开。 赋值语句:给变量、常量或对象的属性指定一个值或表达式。 格式:变量名表达式 作用:将表达式的值赋值给变量名。 一般用于给变量赋值或对控件设定属性值。 例如:s=10 Text1.Text 欢迎使用VBA 注意:虽然赋值号与关系运算符等于号都用“=”表示,VBA会 根据所处的位置自动判断是何种意义的符号 声明语句:命名和定义常量、变量、数组以及过程。 注释语句 在程序中的

19、适当位置加上注释语句有利于程序的维 护和阅读。 格式:Rem 注释内容 或用单引号 注释内容 语句组语句组2 语句组语句组1 TF 语句组语句组2 条件条件 语句组语句组1 F T 条件条件 语句组语句组 T F 条件条件 语句组语句组 单行 If 语句 格式:If 表达式 Then 语句1 Else 语句2 功能:If 测试指定的条件,如果条件表达式为真 (True),则执行Then 后面的语句1,否则 执行语句2(若Else子句未省略)。 TF 语句语句2 条件条件 语句语句1 TF 条件条件 语句语句1 Private Sub p1( ) Dim x As Integer, y As I

20、nteger x = InputBox(“请输入x值”) If x = 0 Then y = 2 * x + 1 Else y = 1 MsgBox y: & y End Sub 语句组可以由一条或多条语句组成,语句组不能与 Then书写在同一行,否则VBA认为是一个单行If语句,会 导致Else没有匹配的If。 语句“End If”是多行If语句的结束标志。在多行If 语句 中,即使省略Else子句,也要写该结束标志。省略Else 子句时的多行If语句形式为: If 表达式 Then 语句组 End If y xxx xxxx sin cos 2 3 10 30 T x y T z 为最小数

21、 T 使得 x y F F F x yz x y x 与 y 交换 y z y 与 z 交换 x y x 与 y 交换 If x= 90 ThenIf mark = 90 Then Print Print 优优 ElseIf mark = 80 ThenElseIf mark = 80 Then Print Print 良良 ElseIf mark = 70 ThenElseIf mark = 70 Then Print Print 中中 ElseIf mark = 60 ThenElseIf mark = 60 Then Print Print 及格及格 ElseElse Print Pri

22、nt 不及格不及格 End IfEnd If 方法二方法二 If mark 60 ThenIf mark 60 Then Print Print 不及格不及格 ElseIf mark 70 ElseIf mark 70 ThenThen Print Print 及格及格 ElseIf mark 80 ElseIf mark 80 ThenThen Print Print 中中 ElseIf mark 90 ElseIf mark = 60 ThenIf mark = 60 Then Print Print 及格及格 ElseIf mark = 70 ThenElseIf mark = 70 T

23、hen Print Print 中中 ElseIf mark = 80 ThenElseIf mark = 80 Then Print Print 良良 ElseIf mark = 90 ThenElseIf mark = 90 Then Print Print 优优 ElseElse Print Print 不及格不及格 End IfEnd If :与同类型的下面四种形式之一: 表达式 例: A 一组枚举表达式(用逗号分隔) 2,4,6,8 表达式1 To 表达式2 60 To 100 Is 关系运算符表达式 Is 60 语句格式: Select Case 变量或表达式 Case 表达式列表1 语句块1 Case 表达式列表2 语句块2 Case Else 语句块n+1 End Select . 结束结束 False True 功能:执行For语句时,

温馨提示

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

评论

0/150

提交评论