VBA编程入门目录序-------------------------------------3VBA编程环境------------------------7VBA编程基础------------------------12VBA常用语句------------------------32VBA流程控制------------------------35VBA数组------------------------------57VBA过程------------------------------69VBA操作数据库---------------------76VBA是什么?1VBA有什么作用?2怎么样才能学好VBA?3序言VBA是什么?•简单的说VBA是一种编程语言,它可以支持在Office系列软件中命令和功能的编写。ExcelVBA则是以MicrosoftExcel为开发对象的VBA语言。如运行下面的VBA代码就可以在单元格A1中输入100。SubT1()Range(a1)=100EndSubVBA有什么作用效率完成重复性的劳动如果你需要经常重复的做某个工作,那么可以编写一个VBA代码来帮你快速完成。克服克服excel自身功能的局限性excel提供的功能有效,提供的函数也有效。而我们利用VBA则可以自定义功能、自定义函数。应用编制自已的应用软件即使你不是专业的编程人员,你也可以利用VBA+Excel编写出你想要的应用软件怎么才能学好VBA6、独立编写VBA小软件1、身边备有几本VBA参考书5、多帮助别人,多总结4、多练习、多思考、多提问2、常用录制宏功能3、多查看帮助文件Text进入VBA编程环境VBA窗口的组成VBA窗口由工具栏、工程资源管理器窗口、属性窗口、代码窗口和立即窗口组成。新建模块进行VBA编程V-1VBA编程环境进入VBA编程环境(Excel2007)如果是在Office2007中,若你没看到“开发工具”选项卡的话,先到选项中打开它。工程窗口-选择对象选择事件属性窗口-选择对象的属性代码窗口VBE编程环境然后在“开发工具”选项卡的“代码”区域里按”VisualBasic”按键,就可以打开同样的界面标准工具条视图MicrosoftExcel按钮:切换Excel2007窗口插入按钮:插入模块或过程运行子过程/用户窗体按钮:运行模块中的程序中断按钮:中断正在运行的程序重新设置按钮:结束正在运行的程序设置模式按钮:在设计模式和非设计模式之间切换工程资源管理器按钮:用于打开工程资源管理器属性窗口按钮:用于打开属性窗口对象浏览器按钮:用于打开对象浏览器MicrosoftExcel插入模块运行子过程/用户窗体设计模式中断重新设计工程资源管理器对象浏览器属性窗口新建模块在“工程”视图中,右键单击”ThisWorkbook”,然后在菜单中选“插入”-“模块”,就会在主界面出现一片空白(如图Module1)。即可在空白进行VBA编程。V-2-1常量、变量常量:在程序运行中其存储的值不会改变。变量:在程序运行中其值可以改变。VBA使用常量、变量来存储值。用来保存在程序运行期间数据。V-2VBA编程基础常量在程序运行过程中,其值不会被改变的量称为常量。在VBA中有三类常量:直接常量如:10,20%,123.0,“AB”,“VBA程序设计”等符号常量系统常量指VBA系统预先定义好的,用户可以直接引用的量。如:acForm,acQuery,vbOk,vbRed变量是内存中的临时单元,存放在程序执行过程中产生的中间结果和最后输出结果。在程序中使用变量,就要给变量定义名称及类型,即对变量进行声明。变量变量命名规则变量名必须以字母或汉字开头,后可跟字母、汉字、数字或下划线组成(不能含有小数点和空格),长度不超过255个字符的字符串;不能使用VBA中的关键字;VBA中不区分变量名的大小写;变量名的最后一个字符可以是%、&、!、#、$等表示数据类型的声明符。说明:常量名的命名规则与变量名的命名规则相同V-2-2数据类型与变量的声明在VBA中,数据类型用来决定变量可以保存何种数据。VBA支持多种数据类型,为用户编程提供了方便。VBA的数据类型数据类型类型声明符存储空间取值范围整型(Integer)%2-32768~32767长整型(Long)&4-2147483648~2147483647单精度浮点型(Single)!4负数:-3.402823E38~-1.401298E-45正数:1.401298E-45~3.402823E38双精度浮点型(Double)#8负数:-1.79769313486232E308~-4.94065645841247E-324正数:4.94065645841247E-324~1.79769313486232E308货币型(Currency)@8-922337203685477.5808~922337203685477.5807日期型(Date)8100年1月1日~9999年12月31日字符型(String)$0字符~65400个字符字节型(Byte)10~255逻辑型(Boolean)2True或False对象型(Object)4任何引用的对象变体型(Variant)变量声明用Dim|Static语句显式声明局部变量格式:Dim变量名[AS类型]或Dim变量名类型符语句中的“As类型”子句是可选的。如果使用该子句,就可以定义变量的数据类型。未使用,默认变量的类型为变体型(Variant)。例如:DimiAsinteger,s表示声明了一个名为i的整型变量和一个名为s的变体型变量。关键字Dim或Static的区别:Dim声明:随过程的调用而分配存贮单元,每次调用都对变量初始化;过程体结束,变量的内容自动消失,存储单元释放。Static声明:Static声明的变量,也称为静态变量。静态变量在程序运行过程中一直保留其值,即每次调用过程,变量保持原来的值。隐式声明变量未进行上述的声明而直接使用变量,称变量的隐式声明。采用隐式声明的变量都是变体型(Variant)。注意:VBA中允许不事先声明而直接使用变量,可以通过语句OptionExplicit,来要求所使用的变量必须事先声明,否则VBA会发出警告信息。下面是一个简单的程序,其使用的变量a,b,Sum都没有事先定义。PrivateSubForm_Click()Sum=0a=10b=20Sum=a+bPrintSum=;SumEndSub良好的编程习惯应该是“先声明变量,后使用变量”,这样做可以提高程序的效率,同时也使程序易于调试。VBA中可以强制显式声明,可以在窗体模块、标准模块和类模块的通用声明段中加入语句:OptionExplicit声明而未赋值的变量的值为:数值型变量初始化为0;字符型变量为零长度字符串;变体型变量初始化为Empty。变量的初始化V-2-3运算符和表达式运算符算术运算符例如:123+456结果123456123&456结果123456使用上&与+的区别:例如:abcdef&12345结果为abcdef12345123&456结果为123456abcdef+12345结果为出错123+456结果为579连接运算符:&、+(字符串连接)将两个操作数进行大小比较,结果为逻辑值。注意:字符串比较,则按字符的ASCII码值从左到右一一比较,直到出现不同的字符为止。关系运算符将操作数进行逻辑运算,结果是逻辑值逻辑运算符组成由变量、常量、函数等运算对象加上运算符、圆括号组成的式子。书写规则(1)运算符不能相邻。例a+-b是错误的。(2)乘号不能省略。例x乘以y应写成:x*y。(3)括号必须成对出现,均使用圆括号。(4)表达式从左到右在同一基准上书写,无高低。运算优先级算术运算符连接运算符关系运算符逻辑运算表达式例1:用人单位招聘秘书:年龄小于40岁的女性,学历专科或本科,年龄40,性别=“女”,(学历=“专科”,学历=“本科”)AndAndOr73x例2:算术表达式:正确的VBA表达式:3〈=xAndx=7错误的VBA表达式:3=x=7或3=xOrx=7考虑:若分别写成:年龄40And性别=女And(学历=专科And学历=本科)年龄40Or性别=女Or(学历=专科Or学历=本科)函数实际上是系统事先定义好的内部程序,用来完成特定的功能。VBA提供了大量的内部函数,供用户在编程时使用。函数的调用形式为:函数名(参数表)V-2-4常用函数InputBox函数InputBox(提示[,标题][,缺省])其中:提示:提示信息;标题:对话框标题;缺省:输入区缺省值。注意:函数的返回值为字符型数据。输入、输出函数使用MsgBox,可以在对话框中显示文本信息。格式为:MsgBox(提示信息[,按钮数目和类型][,标题])MsgBox函数或方法(用于显示输出信息)MsgBox函数:变量[%]=MsgBox(提示[,按钮][,标题])MsgBox方法:MsgBox提示[,按钮][,标题]V-3VBA常用语句VBA代码不区分字母的大小写系统保留字自动转换每个单词的首字母大写;语句书写自由一行可书写几句语句,之间用冒号(:)分隔;一句语句可分若干行书写,用续行符将语句分开。V-3-1VBA语句书写规则赋值语句:给变量、常量或对象的属性指定一个值或表达式。V-3-2VBA常用语句格式:[LET]变量名=表达式作用:将表达式的值赋值给变量名。一般用于给变量赋值或对控件设定属性值。例如:s=10Text1.Text=欢迎使用VBA注意:虽然赋值号与关系运算符等于号都用“=”表示,VBA会根据所处的位置自动判断是何种意义的符号声明语句:命名和定义常量、变量、数组以及过程。注释语句在程序中的适当位置加上注释语句有利于程序的维护和阅读。格式:Rem注释内容或用单引号’注释内容结构化程序设计由顺序、分支、循环这3种基本结构所组成。语句组2语句组1TF语句组2条件语句组1V-4VBA程序流程控制FT条件语句组TF条件语句组单行If语句格式:If表达式Then语句1[Else语句2]功能:If测试指定的条件,如果条件表达式为真(True),则执行Then后面的语句1,否则执行语句2(若Else子句未省略)。分支结构TF语句2条件语句1TF条件语句1PrivateSubp1()DimxAsInteger,yAsIntegerx=InputBox(请输入x值)Ifx=0Theny=2*x+1MsgBoxy:&yEndSubPrivateSubp1()DimxAsInteger,yAsIntegerx=InputBox(“请输入x值”)Ifx=0Theny=2*x+1Elsey=1MsgBoxy:&yEndSub根据输入x的值,观察y的输出结果多行If语句格式:If表达式Then语句组1[Else语句组2]EndIf多行If语句的执行过程是:如果“表达式”的值为真,则执行语句组1;否则执行语句组2。当执行完语句组1或语句组2后,程序流程跳转到语句EndIf的后面。语句组可以由一条或多条语句组成,语句组不能与Then书写在同一行,否则VBA认为是一个单行If语句,会导致Else没有匹配的If。语句“EndIf”是多行If语句的结束标志。在多行If语句中,即使省略Else子句,也要写该结束标志。省略Else子句时的多行If语句形式为:If表达式Then语句组EndIf例:计算分段函数yxxxxxxxsincos231030单行If语句实现:Ifx=0Theny=cos(x)-x^3+3*xIfx0Theny=sin(x)+sqr(x*x+1)多行If语句实现:Ifx0Theny=sin(x)+sqr(x*x+1)Elsey=cos(x)-x^3+3*xEndIfIf语句的嵌套If语句的嵌套是指If或Else后面的语句块中又包含If语句。If表达式1ThenIf表达式11Then…EndIf…E