版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
4VBAVBAVBAVBA数VBA编程打下基VBAExcel中使VBA编程,可以开发出许多有价值的应用程序。作为初学者,首先需要了解什么是VBA,以及用VBA能做什么。VBAVisualBasicforApplication的缩写,是一种应用程序自动化语言。所谓应用程序自动化,是指通过编写程序让常规应用程序(Excel、Word等)自动完成工作,如在Excel里自动设置单元格的格式、多张工作表之间的自动计算等。VBA是微软应用程序开发语言——VB的子集。所以如果有VB程序设计的经验,学VBA根据其嵌入软件的不同,增加了对相应软件中对象的控制功能。例如Excel的ExcelVBAExcelExcelExcel的自动化水平。可以用很短的时间在Excel环境中开发出一套完整的管理信息系统。Excel中使用VBA当使用Excel为,利用Excel现有的功能(如文件管理、函数等),可以减少件给用户即可完成文件的发布。VBAExcelVBAExcel应用程序都由一个工程表示,每个工程包含当前工作簿VBA代码,本节介绍VBA代码最基础的内容。在本书第2章中录制的宏都是由VBA代码构成的,进入VBE环境可以看到录制的宏代码。在Excel中录制的宏都是以VBA代码表示,所有的宏都是以Sub开始,以关键词EndSub结束。其结构如下:'说明VBAVBA在Sub之后是宏的名称,宏名称后是一对括号。在Sub和EndSub之间是每次Sub设置表头格式()'快捷键:Ctrl+tActiveWindow.WindowState=Sub设置表头格式()'快捷键:Ctrl+tActiveWindow.WindowState=xlNormalWithSelection.HorizontalAlignment=.VerticalAlignment=.WrapText=.Orientation=.AddIndent=.IndentLevel=.ShrinkToFit=.ReadingOrder=.MergeCells=FalseEndWithWith.Name.Name宋体.Size=.Strikethrough=.Superscript=.Subscript=.OutlineFont=.Shadow=.Underline=.ColorIndex=.TintAndShade=.ThemeFont=xlThemeFontNoneEndWithSelection.Font.Bold=TrueActiveWindow.WindowState=xlNormalEnd有一些固定的单词(称为关键字)经常出现,例如,Selection、With几乎每行代码中都包括句点,用来连接VBA语言中不同的要素。例如,VBA中具有特殊含义的字符,如+、–、*、/、>、<、=和各种标点综上所述,在VBA代码中可使用各种常见的符号。VBA中具有特殊意义的保留字或符号。这些关键字具多种类型。常用的关键字如表4-1所示。4-1VBA提示:VBA中,对关键字不区分大小写,无论用户是按大写、小写或大小写混合的Enter键后,VBE将自动将关键字转换为VBA程序中,为了区分过程、常数、变量、对象等,需要为这些过程、常数、变不能在标识符中使用空格、句点(.)、感叹号(!)或@、&、$,#整型整型数据为16位(2个字节)的数值形式,其范围为–32768~32767之间。整型DimDimn1AsIntegerDimn%长整型长整型数据为32位(4个字节)有符号的数值形式,其范围从 。Long的类型字符为和号(&)单精度浮点型的范围在负数的时候是从–3.402823E38~–1.401298E-45,而在正数的时候是从1.401298E-45~3.402823E38。单精度浮点型的类型字符为感叹号(!)双精度浮点型货币型为64位(8个)10000154位数字。这种表示法的范围可以从–9223372654775808~22337208477.5807。货币型为at符()。字节型字符串"Microsfot"MicrosfotVisualBasic""欢迎使用VBA"Dimstr1AsStringDimDimstr1AsStringDimstr2AsString*10定义后将一直占用10个字符位置。型型数据很简单,只有两个值(True或False。该类型适合简单的二元信息例如,真/假、是/为True或Fals为16位(2转换Boolean值为其他的数据类型时,False成为0,而True成为–1。日期型11999912310:00:0023:59:59#1Jan93#日期型变量会根据计算机中的短日期格式来显示。时间则根据计算机的时间格式值则表示时间。午夜为00.5。负整数表示18991230日之前的日期。对象型VBA是面向对象的程序设计语言,用户可在程序中各种对象,例如,Excel的工作表、单元格等。这些对象有自己特定的对象名,这里所说的对象型可任何对象。必须使用Set语句给对象变量赋值,对象变量使用结束后,应为其赋值为Nothing。如:DimMyObjectAsSetMyObject=Worksheets("sheet1")SetMyObject=Nothing
'赋值对 变体型变体型是VBA中的一种特殊数据类型,所有没有被数据类型的变量都默认为变体型。变体型数据是所有没被显式(用如Dim、Private、Public或Static等语句——变量的将在本章后面进行介绍为其他类型变量的数据类型。变体型没有类型字符。String数据及用户定义类型外,可以包含任何种类的数据。Variant也可以包含EmptyErrorNothingNull等特殊值。可VarType函数或TypeName函数来决定如何处理变体型中的数据。As数据类型AsEndTypeTypeProductNameAsStringtyAsIntegerPriceAsCurrencyOrderAsIntegerEnd便地处理Excel工作表中的数据。使用Type语句了一个用户自定义类型后,就可以在该范围内的任何位置声注意:自定义数据类型的定义必须放在模块(模块和类模块)的部分。在使用记录Type语句进行定义。一般情况下,记录类型在模块中定义,其变量可以出现在VBA工程的任何地方。4-1所示的工作表中每行数据产品名称、库存量、单价、订购量等数据。在VBA程序中为了方便地处理这些数据,可自定义数据类型Product,然后在程序中使用4-1TypeTypeProductNameAsString tyAsInteger PriceAs OrderAsInteger EndTypeSubDimp1AsWithWorksheets("商品")p1.ProductNameCells(32)p1.Price=.Cells(3,6) ty=.Cells(3,7)p1.Order=.Cells(3,8)EndEnd4-2xlHAlign 值 –7–51–––PublicPublic|PrivateEnum类型名称成员[=常数表达式]常数表达式EndPublicPublicEnumEnd1,“六年级”表示常数6。PublicPublicEnum一年级EndGrade枚举类型后,即可在代码窗口中使用该类型,在定义为变量时将Grade4-2所示。给枚举类型变量赋值时,在代码窗口中将自动列出枚举类型的成员,如图4-3所示。图4-2定义枚举变 图4-3使用枚举 3.14、255等仅表示它自身取值的数据叫常数。常数的值在程序执行之前就已经确定,执行VBA程序中可以直接使用的量。根据表示的数据类型不同,直接常时间常数和常数等多种类型。 "ExcelVBA从入门到精通 注意:字符串常数必须引号括起来,否则 会将其认为是一个变量名体的意义。例如,#8/8/2008#是正确的,而#4/31/2008#是错误的,因为4月没有31日。输入日期时,VBE自动将其两个“#VBE的代码中输入以下内容VBE都会自动将其按“月/日/年”的格式转换为正确的表示形式,显示如 Windows操作系统中的设置相关。例如,#8/13/08#可能表示2008813日。
4-4 有确定的值。VBA中可使用Const关键字定义符号常数,其语法格式如下:Const常数标识符As数据类型=符号常数表达 其中,Const为定义符号常数的关键字,符号常数表达式计算出来的值保存在常数名中,如果在常数时没有显式地使用Astype子句,则该常数的数据类型是最适合其表ConstConstMAXCOL=ConstMyIntAsInteger=ConstBOOKNAMEExcelVBA从入门到精通ConstBOOK= Office"+BOOKNAME 以上代码使用前面定义的 BOOKExcel中的各对象,ExcelVBA预定义了许多常数,这些常数称为系统常数。提供对象库的其他应用程序(Access、Excel、ProjectWord等)也提供常数列表,VBA中,系统常数名采用大小写混合的格式,其前缀表示定义常数的对象库名。Excel中的系统常数名通常都是以小写的xl(xlWindowType的成员包括xlWorkbook等几个)作为前缀,而VB中的系统常数名通常都是以小写的vb作为前缀。提供了很多Msgbox常数,用vbOKOnly表示框只有【确定】按钮,比用数值0更直“常数”的所有帮助条目,如图4-5所示。在查找到的信息中单击【VisualBasic常数】按钮,可显示VBA常数的分类,如图4-6左图所示。单击分类【Color常数】按钮即可查看具体的常数,如图4-6右图4-54-6常数,单击【搜索】按钮,将显示Msgbox的相关常数,如图4-7所示。4-7 变量就是事先将变量名及其类型在使用之前通知VBA,由VBA按照变量的数据类型分配空间。可使用Dim、Static、Private或Public关键字来变量。最常用的是使用Dim变量,其语法格式如下:Dim变量名[As数据类型 Dim和As为变量的关键字数据类型为前面介绍的类型关键字,例如,String、Date型包含进来。在下面的语句中,变量intX、intY与intZ被为Integer类型。DimintXAsInteger,intYAsInteger,intZAs 用隐式变量时,VBAVariant类型。在为其指定值之前,其值Empty;当为它赋值后,会采用所赋值的类型作为变量的类型。Option VBA应用程序中,将使用很多的变量,有些变量可在整个应用程序中使用,而另值自动。这类变量用Dim关键字进行定义。ExcelVBA的某个模块顶端定义的变量,在该模块的各过程中都可模块级别变量。这类变量在模块的开始部分使用Dim或Private关键字进行定义。用的变量。这类变量在模块的开始部分用Public关键字进行定义。在过程中使用Static关键字的变量称为静态变量,这类变量在整个应用程序中有码创建了变量strName并且指定为String数据类型。DimstrNameAs Dims1AsStrings1测试局部变量"MsgBoxs1EndEndSub上面的代码定义了两个过程“过程1”和“过程2”,其中“过程1”中定义了一个局部s1MsgBox4-82”中直接使用MsgBox显示s1中的值,因为该过程中并未定义变量s1的值,所以显示框中无任何信息,如图4-8右图所示。4-8程。在模块级别中使用Dim语句与使用Private语句是相同的。不过使用Private语句可以更容易地和解释代码。使用两个语句变量的语法格式完全相同。在模块的【】部分,输入变量的代码,如图4-9所示PrivatestrNameAs 图4-9模块变SubSub测试模块变量()strName=" MsgBox软件设计:&strNameEndSubSub显示模块变量的值End注意:模块变量的初始化操作必须在过程中进行,不能在模块【】部分进行strNameMsgBoxstrName的值。接着运行过程“显示模块变量的值”,在该过程中未对模块strNamestrName为模块变量,在“测试模块变量”过程中已经赋值,所如果首先运行过程“显示模块变量的值”,MsgBox框将不会显示任何值使用Public语句公共模块级别变量。全局变量可用于工程中的任何过程。如果全局变量是于标准模块或是类模块中,则它也可以被任何到此全局变量所属工程的注意:一般情况下,要尽量少使用全局变量。过多地使用全局变量,可能会。在VBE中双击模块“变量作用域”,在模块的部分使用以下代码全局PublicstrAppNameAs SubSub初始化全局变量strAppNameExcel测试应用程序"MsgBoxstrAppNameEndSub显示全局变量的值()Sub显示全局变量的值()End图4- 全局变 图4-11在其他模块中全局变静态变量的方法是,在过程内部用Static关键字一个或多个变量,其用法Dim语句完全一样,例如StaticintCountAs SubSub静态变量测试Dimi1AsIntegerStatici2AsIntegeri1=i1+1i2=i2+MsgBox局部变量的值:&i1&vbNewLine&_"静态变量的值:"&i2,vbOKOnlyEndSub测试Fori=1To5EndSub4-12左图所示的结果,由图可看出局部变量和静态变量的值都为1。单击【确定】按钮将再次显示类似的框,单击多次【确定】4-12在“静态变量测试”过程中将变量i1为局部变量,该过程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 重庆财经学院《市场营销学》2021-2022学年第一学期期末试卷
- 重庆财经学院《面向对象程序设计综合实践》2021-2022学年期末试卷
- 茶叶供货服务方案
- 重庆财经学院《国际贸易实务》2021-2022学年第一学期期末试卷
- 苍溪雪梨产业问题研究报告
- 策划公司惩罚方案
- 禅修活动课程设计
- 白银公园绿化施工方案
- 玻璃呋喃钢防腐施工方案
- 潮流服饰销售规模研究报告
- 混凝土超声检测缺陷报告
- 枫桥式乡镇派出所事迹材料
- 国开电大《小学数学教学研究》形考任务3答案
- 燃气锅炉房安全风险分级清单
- 牙体牙髓学课件 五年制牙髓病
- 电工仪表及测量课件
- 教师个人成长档案电子模板
- 工厂供配电系统的动力方案及选型原则
- 国开电大本科《行政法与行政诉讼法》期末考试案例分析题库2023春期版
- 管道热损失的计算方法
- 智能控制导论智慧树知到答案章节测试2023年昆明理工大学
评论
0/150
提交评论