1、技术部分VBA,VBAVisusl Basic for Application未来方向Visual Studio to Office,EXCEL中的VBA与VB的区别,1 vb是一种应用程序,和c语言相当; VBA是寄生在EXCEl中的一种语言,其语法和vb是一样的; 2 vb有自己的开发环境,VBA必须在EXCEl中开发。,VBA的特点,1 对于重复的工作定义程序,利用按钮来方便操作; 2 根据业务的需要,进行操作界面的定制,使EXCEL环境成为一个业务系统; 3 创建报表系统,减少在实际报表设计中的操作。,VBA的使用,VBA的启动与关闭; VBA的程序编译环境VBE。,演示小结,通过对于
2、“宏”程序的演示以及录制,我们可以发现掌握宏编程(VBA程序)可以控制重复操作,减少很多电子表格操作带来的错误,实现电子表格的自动化处理(办公自动化)。,VBA的变量以及变量的声明,数值型变量:整型(Integer),长整型(Long),逻辑性(Boolean),日期型(Date)等等。 文本型变量:字符型(String) 例子: Dim i as Integer, j as Integer VBA还定义了一种常用的变量类型:Variant Dim i (默认的时候就是Variant),VBA的数组变量,默认时,VBA都是从0开始对数组编号: Dim vec(4) 包含4个元素; Dim vc
3、(2,5) 是一个二维数组,包含10个元素;如果想从1开始编号,需要添加语句:“Option Base 1”,VBA中的常量和变量,常量:内置常量和用户自定义常量。 Excel内置常量通常以vb开头,如vb_a等; Excel自定义常量是用户自己设置得到的。变量:分为显式变量和隐式变量。 显式变量:程序可读性好,占用内存少; 隐式变量:可读性差,占用内存多。,变量的定义方式,Dim 动态定义 Static 静态定义 Public 公用的全局的,即让所有模块中的所有过程都可以使用。 Private 私有的局部的,即只能在当前模块中使用。 Sub定义的范围就更加狭窄,只在该Sub过程中使用。,VB
4、A的函数与过程,过程是组成程序的基础,每一个过程完成一个特定的任务,所有的过程组合在一起成为程序。 过程主要分类:Sub过程,Function过程,Property过程。 函数也是过程,函数能够返回值,也可以接受参数。,VBA程序的控制结构,和其他程序编译环境相似,VBA具有以下控制流程的结构: 1)Ifthenend if 2)Fornext 3)For each next 4)While.loop,程序运算符,数学运算符+ ,-,*,/,22,5mod2; 连接运算符 &; 逻辑运算符 and,or等等;优先级别: 数学运算符连接运算符逻辑运算符,VBA中的概念和术语,Excel中的VBA
5、中的应用程序总是由多个对象构成。 所谓对象:就是构成应用程序的元素,每个对象模型都包含两种对象集合对象和独立对象。 例如:workbooks为一个集合对象;workbook为一个独立对象。,VBA 中的对象,在VBA程序环境中: 1)Application表示Excel,最宽泛的对象; 2)Workbooks表示当前所有打开的Excel文档; 3)Worksheets表示一个Excel文件中表单对象; 4)Range表示一个小表中的一个区域; 5) Cells(2,2)表示第二行第二列的单元格。 一个例子: Application.Workbooks(“Model”).Worksheets(“
6、inputs”).Cells(“data”),VBA中的各种对象的“属性”和“方法”,公式:对象.方法对象.属性 1.给对象起名:Cells(“B23”).Name=“month” 2. Range(“B23”).Select 3. Range(“B23”).Copy 4.WorkBooks(“Model”).Activate 5.WorkSheets(“inputs”).Delete 6. WorkBooks.Add,最宽泛的Application对象,Office所有组件都可以引用“Application对象”, Application包含众多的属性和方法。 Application包含的属
7、性 Application.Username Application.WorksheetFunction Application包含的方法 Application.FindFile Application.OnTime Application.Wait Application.GetOpenFileName,WorkBook对象,包含三种子对象: WorkBooks:当前所有打开的Excel文档; ActiveWorkBook:当前被激活的Excel文档; ThisWorkBook:程序所在的Excel文档。,WorkSheet对象,其独有的九种WorkSheet事件,在编程中经常使用,具体如
8、下: Activate事件:工作表被激活时 BeforeDoubleClick:双击工作表时 BeforeRightClick:右键点击工作表时 Calculate:当工作表内容被重新计算时 Change:当用户更改单元格值时 SelectionChange:即选择改变时,一个程序:Sub link()Range(“B3”).Value=4000Range(“B4”).Formula=“=b3” End sub,稍难一点的例子: Sub Factorial()fac=1 num= Range(“B5”).Value For i=1 to num fac=fac*i next i Range(“
9、C5”).Value=facEnd Sub,VBA程序如何与表格通讯,通过上面两个小程序,我们发现VBA主要通过这样的途径与表格通讯: Range(“B5”).Value=3888 (引用位置,然后赋值) VBA还提供了另外两种常用的与表格通信的方法: 1)MsgBox 2)InputBox(),关于MsgBox,Sub MsgBoxdd( )MsgBox “Click Ok to Continue” End sub,关于InputBox(),InputBox()带了一对括号,可见它是一个函数,存在一个返回值,参见下面的例子: Sub Factorial()fac=1 num= InputBox(“Enter a number”) For i=1 to num fac=fac*i next i MsgBox” Factorial is”&fac End Sub,