《VBA编程入门》PPT课件.ppt

上传人:牧羊曲112 文档编号:5577285 上传时间:2023-07-30 格式:PPT 页数:85 大小:704KB
返回 下载 相关 举报
《VBA编程入门》PPT课件.ppt_第1页
第1页 / 共85页
《VBA编程入门》PPT课件.ppt_第2页
第2页 / 共85页
《VBA编程入门》PPT课件.ppt_第3页
第3页 / 共85页
《VBA编程入门》PPT课件.ppt_第4页
第4页 / 共85页
《VBA编程入门》PPT课件.ppt_第5页
第5页 / 共85页
点击查看更多>>
资源描述

《《VBA编程入门》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《VBA编程入门》PPT课件.ppt(85页珍藏版)》请在三一办公上搜索。

1、VBA编程入门,目录,序-3VBA编程环境-7VBA编程基础-12VBA常用语句-32VBA流程控制-35VBA数组-57VBA过程-69VBA操作数据库-76,序言,VBA是什么?,简单的说VBA是一种编程语言,它可以支持在Office系列软件中命令和功能的编写。Excel VBA则是以Microsoft Excel为开发对象的VBA语言。如运行下面的VBA代码就可以在单元格A1中输入100。,Sub T1()Range(a1)=100End Sub,VBA有什么作用,怎么才能学好VBA,进入VBA编程环境VBA窗口的组成 VBA窗口由工具栏、工程资源管理器窗口、属性窗口、代码窗口和立即窗口

2、组成。新建模块进行VBA编程,V-1 VBA编程环境,进入VBA编程环境(Excel2007),如果是在Office 2007中,若你没看到“开发工具”选项卡的话,先到选项中打开它。,VBE编程环境,然后在“开发工具”选项卡的“代码”区域里按”Visual Basic”按键,就可以打开同样的界面,标准工具条,视图Microsoft Excel按钮:切换Excel 2007窗口插入按钮:插入模块或过程运行子过程/用户窗体按钮:运行模块中的程序中断按钮:中断正在运行的程序重新设置按钮:结束正在运行的程序设置模式按钮:在设计模式和非设计模式之间切换工程资源管理器按钮:用于打开工程资源管理器属性窗口按

3、钮:用于打开属性窗口对象浏览器按钮:用于打开对象浏览器,新建模块,在“工程”视图中,右键单击”ThisWorkbook”,然后在菜单中选“插入”-“模块”,就会在主界面出现一片空白(如图Module1)。即可在空白进行VBA编程。,V-2-1 常量、变量,常量:在程序运行中其存储的值不会改变。变量:在程序运行中其值可以改变。,VBA使用常量、变量来存储值。用来保存在程序运行期间数据。,V-2 VBA编程基础,常量 在程序运行过程中,其值不会被改变的量称为常量。在VBA中有三类常量:直接常量 如:10,20%,123.0,“AB”,“VBA程序设计”等 符号常量系统常量 指VBA系统预先定义好的

4、,用户可以直接引用的量。如:acForm,acQuery,vbOk,vbRed,变量是内存中的临时单元,存放在程序执行过程中产生的中间结果和最后输出结果。在程序中使用变量,就要给变量定义名称及类型,即对变量进行声明。,变量,变量命名规则变量名必须以字母或汉字开头,后可跟字母、汉字、数字或下划线组成(不能含有小数点和空格),长度不超过255个字符的字符串;不能使用VBA中的关键字;VBA中不区分变量名的大小写;变量名的最后一个字符可以是%、&、!、#、$等表示数据类型的声明符。,说明:常量名的命名规则与变量名的命名规则相同,V-2-2 数据类型与变量的声明,在VBA中,数据类型用来决定变量可以保

5、存何种数据。VBA支持多种数据类型,为用户编程提供了方便。,VBA的数据类型,变量声明用Dim|Static语句显式声明局部变量 格式:Dim 变量名 AS 类型 或 Dim 变量名类型符 语句中的“As 类型”子句是可选的。如果使用该子句,就可以定义变量的数据类型。未使用,默认变量的类型为变体型(Variant)。例如:Dim i As integer,s 表示声明了一个名为i的整型变量和一个名为s的变体型变量。,关键字Dim或Static的区别:Dim 声明:随过程的调用而分配存贮单元,每次调用都对变量初始化;过程体结束,变量的内容自动消失,存储单元释放。Static 声明:Static

6、声明的变量,也称为静态变量。静态变量在程序运行过程中一直保留其值,即每次调用过程,变量保持原来的值。,隐式声明变量 未进行上述的声明而直接使用变量,称变量的隐式声明。采用隐式声明的变量都是变体型(Variant)。注意:VBA中允许不事先声明而直接使用变量,可以通过语句 Option Explicit,来要求所使用的变量必须事先声明,否则VBA会发出警告信息。,下面是一个简单的程序,其使用的变量a,b,Sum都没有事先定义。Private Sub Form_Click()Sum=0 a=10 b=20 Sum=a+b Print Sum=;SumEnd Sub,良好的编程习惯应该是“先声明变量

7、,后使用变量”,这样做可以提高程序的效率,同时也使程序易于调试。VBA 中可以强制显式声明,可以在窗体模块、标准模块和类模块的通用声明段中加入语句:Option Explicit,声明而未赋值的变量的值为:数值型变量初始化为0;字符型变量为零长度字符串;变体型变量初始化为 Empty。,变量的初始化,V-2-3 运算符和表达式,运算符算术运算符,例如:123+456 结果 123456 123&456 结果 123456 使用上 与+的区别:例如:abcdef&12345 结果为 abcdef12345 123&456 结果为 123456 abcdef+12345 结果为 出错 123+45

8、6 结果为 579,连接运算符:、+(字符串连接),将两个操作数进行大小比较,结果为逻辑值。注意:字符串比较,则按字符的ASCII码值从左到右一一比较,直到出现不同的字符为止。,关系运算符,将操作数进行逻辑运算,结果是逻辑值,逻辑运算符,组成 由变量、常量、函数等运算对象加上运算符、圆括号组成的式子。书写规则(1)运算符不能相邻。例a+-b是错误的。(2)乘号不能省略。例x 乘以y 应写成:x*y。(3)括号必须成对出现,均使用圆括号。(4)表达式从左到右在同一基准上书写,无高低。运算优先级 算术运算符连接运算符关系运算符逻辑运算,表达式,例1:用人单位招聘秘书:年龄小于40岁的女性,学历专科

9、或本科,年龄40,性别=“女”,(学历=“专科”,学历=“本科”)And And Or,例2:算术表达式:正确的VBA表达式:3=x And x=7 错误的VBA表达式:3=x=7 或 3=x Or x=7,考虑:若分别写成:年龄40 And 性别=女 And(学历=专科 And 学历=本科)年龄40 Or 性别=女 Or(学历=专科 Or 学历=本科),函数实际上是系统事先定义好的内部程序,用来完成特定的功能。VBA提供了大量的内部函数,供用户在编程时使用。函数的调用形式为:函数名(参数表),V-2-4 常用函数,InputBox函数 InputBox(提示,标题,缺省)其中:提示:提示信息

10、;标题:对话框标题;缺省:输入区缺省值。注意:函数的返回值为字符型数据。,输入、输出函数,使用MsgBox,可以在对话框中显示文本信息。格式为:MsgBox(提示信息,按钮数目和类型,标题),MsgBox函数或方法(用于显示输出信息),MsgBox函数:变量%=MsgBox(提示,按钮,标题)MsgBox方法:MsgBox 提示,按钮,标题,V-3 VBA 常用语句,VBA代码不区分字母的大小写 系统保留字自动转换每个单词的首字母大写;语句书写自由 一行可书写几句语句,之间用冒号(:)分隔;一句语句可分若干行书写,用续行符将语句分开。,V-3-1 VBA语句书写规则,赋值语句:给变量、常量或对

11、象的属性指定 一个值或表达式。,V-3-2 VBA常用语句,格式:LET变量名表达式 作用:将表达式的值赋值给变量名。一般用于给变 量赋值或对控件设定属性值。例如:s=10 Text1.Text 欢迎使用VBA注意:虽然赋值号与关系运算符等于号都用“=”表示,VBA会根据所处的位置自动判断是何种意义的符号,声明语句:命名和定义常量、变量、数组以及过程。,注释语句 在程序中的适当位置加上注释语句有利于程序的维护和阅读。格式:Rem 注释内容 或用单引号 注释内容,结构化程序设计由顺序、分支、循环这3种基本结构所组成。,V-4 VBA程序流程控制,单行 If 语句格式:If 表达式 Then 语句

12、1 Else 语句2功能:If 测试指定的条件,如果条件表达式为真(True),则执行Then 后面的语句1,否则 执行语句2(若Else子句未省略)。,分支结构,Private Sub p1()Dim x As Integer,y As Integer x=InputBox(请输入x值)If x=0 Then y=2*x+1 MsgBox y:&yEnd Sub,Private Sub p1()Dim x As Integer,y As Integer x=InputBox(“请输入x值”)If x=0 Then y=2*x+1 Else y=1 MsgBox y:&yEnd Sub,根据输

13、入x的值,观察y的输出结果,多行 If 语句格式:If 表达式 Then 语句组1 Else 语句组2 End If,多行If语句的执行过程是:如果“表达式”的值为真,则执行语句组1;否则执行语句组2。当执行完语句组1或语句组2后,程序流程跳转到语句End If的后面。语句组可以由一条或多条语句组成,语句组不能与Then书写在同一行,否则VBA认为是一个单行If语句,会导致Else没有匹配的If。语句“End If”是多行If语句的结束标志。在多行If语句中,即使省略Else子句,也要写该结束标志。省略Else子句时的多行If语句形式为:If 表达式 Then 语句组 End If,例:计算分

14、段函数,单行If语句实现:If x=0 Then y=cos(x)x3+3*x If x0 Then y=sin(x)+sqr(x*x+1),多行If语句实现:If x0 Then y=sin(x)+sqr(x*x+1)Else y=cos(x)x3+3*x End If,If语句的嵌套If语句的嵌套是指If或Else后面的语句块中又包含If语句。If Then If Then End If End If,例:已知x,y,z三个数,使得xyz 用一个IF语句和一个嵌套的IF语句实现,If xy Then t=x:x=y:y=t If yz Then t=y:y=z:z=t If xy Then

15、 t=x:x=y:y=t End If End If,If语句的嵌套注意事项:书写锯齿型;If 与End If配对,IfThenElseIf语句(多分支结构)If Then ElseIf Then Else 语句块 n+1 End If,不管有几个分支,依次判断,当某条件满足,执行相应的语句,其余分支不再执行;若条件都不满足,且有Else子句,则执行该语句块,否则什么也不执行。ElseIf不能写成 Else If。,说明:,例:已知百分制成绩mark,显示对应的五级制成绩 下列三种方法哪些正确,哪些错误?,循环结构 For Next循环 Do Loop循环,ForNext循环结构:将一段程序重

16、复执行指定的次数,其中使用一个计数变量,统计执行的次数。格式:For 循环变量初值 to 终值 Step 步长 语句块 Exit For 语句块 Next 循环变量,ForNext循环语句,功能:执行For语句时,“循环变量”设为“初值”;执行到Next语句时,步长加(减)到循环变量上;再执行For语句时,若“循环变量”超过“终值”则循环结束。步长:未指定值时默认为1。若“步长”是正数或0,则“初值”应大于等于“终值”,否则,“初值”应小于等于“终值”。,例:计算累加程序 S=1+2+3+4.+x,并输出结果。方法:接收一个累加的终值,确定一个循环变量,循环变量有2个作用(加数和循环变量),确

17、定一个存储累加和的变量。使用循环计算,最后输出显示结果。Dim s As integer,x As integer x=InputBox(请输入累加的终值)For x=l To x s=s+x Next思考:计算=1+3+5+7X 或 2+4+6+8X 如何编写?,DoLoop语句(循环结构),Do While Loop语句Do Until Loop语句Do Loop While语句Do Loop Until语句,Do While Loop语句,i=1 Do While i=10 s=s+i i=i+1 Loop 当i=10成立时,执行循环体循环变量i必须有初值防止产生死循环有可能一次也不执行

18、循环体,修改循环控制变量,改变加数值,Do Loop While,i=1 Do s=s+i i=i+1 Loop While i=10当i=10成立时,执行循环体循环变量i必须有初值防止产生死循环至少执行一次循环体,修改循环控制变量,改变加数值,Do Until Loop,i=1 Do Until i10 s=s+i i=i+1 Loop 当i10成立时,结束执行循环体循环变量i必须有初值防止产生死循环有可能一次也不执行循环体,修改循环控制变量,改变加数值,Do Loop Until,i=1 Do s=s+i i=i+1 Loop Until i10当i10成立时,结束执行循环体循环变量i必须

19、有初值防止产生死循环至少执行一次循环体,修改循环控制变量,改变加数值,三种循环语句:即For、DoLoop,共同的特点是重复执行一个语句系列(循环体),不同点是控制重复次数的时机和方法不一样。,数组:数组不是一种数据类型,而是一组相同类型的变量的集合。可以像使用普通变量一样使用数组中的每一个元素。使用数组的好处是用一个 数组名代表逻辑上相关的一批数据,用下标表示该数组中的各个元素,可以提高处理数据的效率,缩短和简化程序。,V-5 数组,数组不是一种数据类型,而是一组相同类型的变量的集合,数组必须先声明后使用。两类数组:静态(定长)数组、动态(可变长)数组 1.一维数组 定义一维数组的形式:Di

20、m 数组名(下界 To上界)As 类型 声明了数组的名、维数、大小、类型,V-5-1 数组的定义,说明:数组名的命名规则与变量的命名相同。数组的元素个数:上界-下界+1。缺省为0,若希望下标从1开始,可在模块的通用部分使用Option Base语句将设为1。其使用格式是:Option Base 0|1 后面的参数只能取0或1例如:Option Base 1 将数组声明中缺省下标设为1下界和不能使用变量,必须是常量,常量可以是直接常量、符号常量,一般是整型常量。,如果省略As子句,则数组的类型为变体类型。数组中各元素在内存占一片连续的存储空间,一维数组在内存中存放的顺序是按下标大小的顺序。,例:

21、Dim mark(1 to 100)As Integer,例:Dim a(-1 to 3)As Integer声明一维数组a,包含了5个整型元素a(-1)、a(0)、a(1)、a(2)、a(3);,在定义静态数组时,每一维的元素个数必须 是常数,不能是变量或表达式。如:错误的声明,下标是变量 Dim x(n)或:n=Inputbox(“输入n”)Dim x(n)As Single,注意:,在数组声明中的下标说明了数组的整体,即每维的大小;而在程序其他地方出现的下标表示数组中的一个元素。两者写法形式相同,但意义不同。例如:Dim x(10)As Integer x(10)=100,表示声明了数组

22、x,有11个数组元素,对x(10)这个数组元素赋值,定义二维数组的形式:Dim 数组名(下界1 To上界1,下界2 To上界2)As 类型,例如:Dim a(2,3)As Single 二维数组在内存的存放顺序是“先行后列”。数组a的各元素在内存中的存放顺序是:a(0,0)a(0,1)a(0,2)a(0,3)a(1,0)a(1,1)a(1,2)a(1,3)a(2,0)a(2,1)a(2,2)a(2,3),2.二维数组,例:Dim lArray(0 To 3,0 To 4)As Long 共有 45个元素等价于:Dim lArray(3,4)As Long,一维数组元素的引用,使用形式:数组名(

23、下标)其中:下标可以是常量、整型变量或表达式。例如:设有下面的数组A(10)、B(10)As Integer 则下面的语句都是正确的。A(1)=B(2)+B(1)+5 取数组元素运算 A(i)=B(i)下标使用变量 A(i+2)=B(i+1)下标使用表达式注意:引用数组时不能下标越界,V-5-2 数组的基本操作,1.数组元素的引用,引用二维数组的形式:数组名(下标1,下标2)下标1指定元素在二维表中所在的行,下标2指定元素在二维表中所在的列。,例如:a(1,2)=10 a(i+2,j)a(2,3)*2 在程序中常常通过二重循环来操作使用二维数组元素。,数组引用实例:,通过循环给数组元素的初值

24、For i=1 To 10 A数组的每个元素值为1 A(i)=1 Next i 数组的输入(通过InputBox()函数)For i=1 To 4 For j=1 To 5 sc(i,j)=InputBox(输入sc(&i&,&j&)的值)Next j Next i,2.数组元素的输入,V-6 VBA过程,过程是构成程序的一个模块,往往用来完成一个相对独立的功能。过程可以使程序更清晰、更具结构性。VBA 具有四种过程:Sub 过程、Function 函数、Property 属性过程和Event 事件过程。,Sub过程执行一些有用的任务但是不返回任何值,它们以关键字Sub开头并以关键字End S

25、ub结束。如下例:,V-6-1 Sub过程,Sub main()Msgbox(“Hello!”)End Sub,第一行Sub表示过程的开始,main为过程名;第二行是过程的主体,调用函数Msgbox(),输 出”Hello!”;最后End 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+100End sub,1 Sub过程的参数传递,在上例中,过程pass

26、word每次执行时需要向其传递两参数(x,y),否则该过程不能执行。在传递x与y参数时,x不影响过程password外部x的值,而y则对过程外的y值产生影响。,2 Sub过程的调用,调用过程有两种方式:1.Call 过程名(参数1,参数2);2.过程名 参数1,参数2如下例:,注意:调用Sub过程也是在过程中进行的,V-6-2 Function函数,Function函数实际是实现一种映射,它通过一定的映射规则,完成运算并返回结果。它们以关键字Function开头并以关键字End Function结束。如下例:,Function password(ByVal x as integer)as bo

27、olean if x=150 then password=true else password=falseEnd Function,函数password返回一个布尔值,Function函数的两各调用方式:1.作为一个表达式放在=右端;2.作为参数使用;如下例:,V-6-3Property 属性过程和Event 事件过程,这是VB 在对象功能上添加的两个过程,与对象特征密切相关,也是VBA 比较重要组成,技术比较复杂,可以参考相关书籍。,V-7 简单介绍VBA操作SQL Server数据库,这一节介绍的是利用ADO的Connection对象来连接数据库,从面达到操作SQL Server的目的。首

28、先要说的是ADO是什么?ADO的全称是:Microsoft ActiveX Data Objects,它使您的客户端应用程序能够通过 OLE DB 提供者访问和操作数据库服务器中的数据。它的主要优点是易于使用、速度快、内存支出低和占用磁盘空间少。,V-7-1 建立对ADO对象库的引用,要操作ADO中的对象的话,首先就得创建对ADO对象库的引用。1.在VB编辑器窗口,选择工具|引用以打开引用对话框。该对话框列出了你电脑上所有可用的类型库2.在清单上找到Microsoft Active Data Objects 2.8 Library,并勾选上它(2.8表示版本,可选)3.关闭引用对话框 一旦创建

29、了对ADO类型库的引用,你就可以使用对象浏览器来查看该应用软件的对象,属性和方法了。如下图:,添加ADO类型库引用,查看ADO类中的对象,左键单击,V-7-2 实例介绍操作SQL Server,下例程序是从SQL Server中查询数据,并且使查询出的数据填充到Workbook 的sheet1中。再为数据库中的表作出更新操作。如下:,注释:行1:开始过程FillData 行2:定义连接conn 行3:定义数据库记录集rs 行4:定义字符串CnStr 行5:定义字符串Sql 行6:给Sql赋值(一数据库中的查询语句)行7,8:给CnStr赋值(连接数据库的必须SQL Server验证)行9,10

30、:另一种Windows验证连接数据库 行11:按CnStr验证打开数据库连接 行12:按Sql语句在数据库中查询,并读取记录传递给rs 行13:rs中的数据从sheet1中的A3单元格开始填充 行14:执行更新操作 行15:关闭rs记录 行16:关闭连接conn 行17:释放rs在内存中的空间 行18:释放conn在内存中的空间 行19:结束过程FillData;,数据库连接验证:,CnStr=Provider=SQLOLEDB;Data Source=IPaddress;“_&“Integrated Security=SSPI,指定是否采用Windows验证连接数据库,可以设置为True,False,Yes,No,SSPI),SSPI是Security Support Provider Interface(Microsoft安全支持提供器接口),在这里可以代替True,操作从数据库中提取的数据:,以下简单介绍rs的几种常用用法:1.rs.RecordCount 表示rs中 行数 2.rs.Fields.Count 表示rs中列数 3.rs.Fields(0).Name 表示rs中第一列名(rs列号索引从0开始)4.rs(0)表示rs指针所在行的第一列数据 5.rs.MoveNext 表示向下移动指针 6.rs.MoveFirst 表示指针移至第行,Thank You!,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号