您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 造纸印刷 > Excel函数VBA教程基础入门(下)
VBA简易教程(下)创建过程创建第一个过程需要两个基本步骤。首先,需要向工作簿中添加一个模块。接着需要向模块中添加一个工程。对于创建的每一个应用程序,只需添加一次模块。可以使用多个模块,但这是不必要的。某些开发者喜欢使用多个模块,以便根据他们的目的或者窗体对过程进行组织。在本练习中,创建的过程只显示一个消息框。在本练习中创建的过程只显示一个消息框。在本练习中使用Msgbox是为了提供一个可见的例子,虽然我们还没有介绍过Msgbox语句,但是在本例中将使用它。要创建该过程,请按如下步骤进行:打开一个新工作簿。选择工具-宏-VisualBasic编辑器,打开VBA编辑器窗口。在`VBA编辑器的左面,可以看到“工程资源管理器”窗口。在工程资源管理器窗口的“Thisworkbook上单击鼠标右键,选择“插入”-“模块”,这样就将一个模块添加到应用程序中了。(如果你没有看见“工程资源管理器”窗口,可以按Ctrl+R)。选择“插入”“过程”,显示“添加过程”对话框。输入“第一个工程”作为过程名字。在“类型”分组框中,确认选择了“子程序”。单击“确定”按钮。这样一个新的过程就添加到模块中了。可以在模块中看到以PublicSub第一个过程()开始,以EndSub结束的语句结构。6)在过程中插入光标,输入以下语句并回车:Msgbox这是我的第一个过程在输入Msgbox后,会自动弹出一个消息框告诉你有关这条命令的信息,称之为自动列表技术。输入完成的过程如下所示:PublicSub第一个过程()Msgbox这是我的第一个过程EndSubVBA对子程序和函数有如下的命名规则:*名字中可以包含字母数字和下划线。*名字中不能包含空格句号惊叹号,也不能包含字符@&$#.*名字最多可以包含255个字符。运行宏创建这个过程后,可以运行一下。运行一个过程有几种方法:可以直接使用“运行”菜单,“运行子程序/用户窗体”工具栏按钮或按下F5键。要运行一个过程,可以按照如下步骤:1)单击“运行子程序/用户窗体”工具栏按钮,过程执行并显示一个消息框。2)单击消息框之中的“确定”按钮,关闭该消息框。保存对模块所做的改变要保存新过程,需要保存过程所驻留的工作簿.可以用VBA编辑器保存工作簿.具体步骤如下:选择文件-保存工作簿.因为本工作簿还没有保存过,所以要给它命名.输入“HOUR4”作为文件名并按回车键,则工作簿和模块与过程都保存下来了.变量变量是用于临时保存数值的地方.每次应用程序运行时,变量可能包含不同的数值,而在程序运行时,变量的数值可以改变.为了说明为什么需要变量,可以按照如下步骤创建一个简单的过程:1)创建一个名为你叫什么名字的过程.2)在过程中输入如下代码:Inputbox输入你的名字:3)按下F5键运行过程,这时会显示一个输入框,要求输入你的名字.4)输入你的名字并按确定按钮,则结束该过程.你输入的名字到那里去了?如何找到用户在输入框中输入的信息?在这种情况下,需要使用变量来存储用户输入的结果.变量的数据类型使用变量的第一步是了解变量的数据类型.变量的数据类型控制变量允许保存何种类型的数据.表列出了VBA支持的数据类型,还列出了各种类型的变量所需要的存储空间和能够存储的数值范围.数据类型存储空间数值范围Byte1字节0-255Boolean2字节True或者FalseInteger2字节-32768-32767Long(长整型)4字节-2147483648-2147483647Single4字节负值范围:-3.402823E38~-1.401298E-45正值范围:1.401298E-45~3.402823E38Object4字节任何引用对象String(长字符串)10字节+1字节/字符0-约20亿变量的数据类型数据类型存储空间数值范围Double8字节负值范围:-1.79769313486232E308~-494065645841247E-324正值范围:4.94065645841247E-324~1.79769313486232E308Decimal14字不包括小数时:+/-79228162514264337593543950335包括小数时:+/7.9228162514264337593543950335Currency8字节-922337203685477~922337203685477Date8字节1000年1月1日-9999年12月31日String(固定长度)字符串的长度1~约65400Varient(数字)16字节Double范围内的任何数值Varient(文本)22字节+1字节/字符数据范围和变长字符串相同用Dim语句创建变量(声明变量)现在,你对变量可以使用的数据类型已经比较熟悉了,以下我们将创建变量.创建变量可以使用Dim语句,创建变量通常成为声明变量。Dim语句的基本语法如下:Dim变量名AS数据类型变量名必须以字母开始,并且只能包含字母数字和特定的特殊字符,不能包含空格句号惊叹号,也不能包含字符@&$#.名字最大长度为255个字符。变量命名的惯例下表给出了推荐的变量命名惯例数据类型短前缀长前缀数据类型短前缀长前缀ArrayaaryBooleanfbinBytebbitCurrencyccurDoubleddblDate/Timedtdtm/datIntegeriintLongllngObjectoobjSinglesngStringsstrVariantvvar使用数组如果你使用过其他编程序语言,可能对数组已经比较熟悉了.数组是具有相同数据类型并共同享有一个名字的一组变量的集合.数组中的元素通过索引数字加以区分,定义数组的方法如下:Dimarray_name(n)Astype(其中n是数组元素的个数)例如,如果要创建保存10个学生名字的数组,可以用以下语句:Dims学生名字(9)AsInteger使用数组声明数组时的另一种方法是不给定大小。可以在程序运行时定义其大小。通过创建动态数组就可以做到。例如,你的程序要创建一表格,可以提示用户输入表格的行和列的数目。声明动态数组的语法如下:Dimdyn_array()Astype对数组声明后可以在程序运行时用ReDim语句指定数组的大小:ReDimdyn_array()(array_size)参数array_size代表数组的新大小。如果要保留数组的数值,请在ReDim语句后使用保留字Preserve,具体语法如下:ReDimPreservedyn_array(array_size)变量赋值声明变量后就可以给变量赋值。请注意下列语句中为数组变量赋值时索引数字的使用。Dimi人数AsIntegerDimi考试成绩AsIntegerDimiAsIntegeri人数=inputbox(输入学生的人数:)ReDimPreservei考试成绩(i数量)Fori=1toi人数i考试成绩(i)=inputbox(输入考试成绩&i)Next使用常量现在,你已经知道变量是存储非静态信息的存储容器.当存储静态信息时可以创建常量.它可以供程序多次使用而且便于记忆.比如圆周率比3.1415926好理解得多.要声明常量并设置常量的值,需要使用const语句.常量声明后,不能对它赋一个新的值.例如,假设需要声明一个常量来保存销项税率,可以使用以下语句:通常常量声明时用全大写字母以区分变量.const销项税率AsLong=0.17作用域到现在为止,已经学习了如何定义变量和常量,但是还不知道在何处定义.可以在两个地方定义常量和变量:过程中定义和在模块顶部一个名为“通用声明”的区域内定义.定义的位置决定租用域.在过程中声明,该变量只能在该过程中使用,其他过程中不能使用这个变量和常量,这中变量成为局部变量或过程级变量;在模块顶部声明的变量称为模块级变量,该变量在该模块的所有过程中都可以使用。作用域还有一种等级的作用域称为公共级。公共级变量可以在应用程序的任何过程中使用,不论过程和变量是否定义在一个模块。这就使得公共级变量在使用中十分灵活,但是公共级变量在程序运行时一直保留在内存中,这样就占用了系统资源。要创建公共级变量,可以用Public语句,具体语法如下:PublicvariablenameAsdatatype要创建公共级常量,具体语法如下:PublicconstCONSTANAMEdatatype=value※公共级变量或常量必须在模块顶部的“通用声明”区域中定义。利用VBA设置工作表使用权限ExcelHome一般保护工作表采取的方法是用EXCEL菜单中的“保护”命令,有时这尚嫌不足,比如一些机密文件根本要让某些使用者无法看到,但又需要他来操作工作簿中的其他表,怎么办?可以打开VBA编辑器,打开“工程资源管理器”,双击该工作表,现在出现的是设置该表的属性的编辑窗口,单击窗口左上的下拉列表框,选择worksheet,这时再从该窗口右上方的列表框中选择Active(“激活”),这时自动显示如下的语句块:PrivateSubWorksheet_Activate()EndSub利用VBA设置工作表使用权限在其中加入代码:(假设用“123”作为密码,Sheet“机密文档”为限制权限文档,sheet普通文档为工作簿中你认为任何适合的工作表)IfApplication.InputBox(请输入操作权限密码:)=123ThenRange(A1).SelectElseMsgbox密码错误,即将退出!Sheets(普通文档).SelectEndif利用VBA设置工作表使用权限完整的程序如下:PrivateSubWorksheet_Activate()IfApplication.InputBox(请输入操作权限密码:)=123ThenRange(A1).SelectElseMsgBox密码错误,即将退出!Sheets(普通文档).SelectEndIfEndSub利用VBA设置工作表使用权限这样做仍有一个问题,就是越权使用者仍会看到一些文件的片段,即在提示密码的那段时间。你可以这样做,用上述方法选择工作表的Deactivate事件,输入以下代码:Sheets(机密文档).Cells.Font.ColorIndex=2这段程序使得此工作表在不被激活时,所有文字为白色。然后,在第一个程序中的Range(A1).Select后插入一行,写入以下代码:ActiveSheet.Cells.Font.ColorIndex=56这段程序,在你输入正确密码后,将该表所有文字转变为深灰色。利用VBA设置工作表使用权限完整的程序如下:PrivateSubWorksheet_Activate()IfApplication.InputBox(请输入操作权限密码:)=123ThenRange(A1).SelectSheets(机密文档).Cells.Font.ColorIndex=56ElseMsgBox密码错误,即将退出!Sheets(普通文档).SelectEndIf提高VBA运行效率由于MicrosoftOffice办公套件的广泛应用,以及该软件版本的不断提升,功能不断完善,在Office办公套件平台上开发出的VBA应用程序越来越多,而VBA是一种宏语言,在运行速度上有很大的限制。因此VBA编程的方法直接关系到VBA程序运行的效率,本文列举了一些提高VBA程序运行效率的方法。方法1:尽量使用VBA原有的属性、方法和Worksheet函数由于Excel对象多达百多个,对象的属性、方法、事件多不胜数,对于初学者来说可能对它们不全部了解,这就产生了编程者经常编写与Excel对象的属性、方法相同功能的VBA代码段,而这些代码段的运行效率显然与Excel对象的属性、方法完成任务的速度相差甚大。提高VBA运行效率ForEachcInWorksheet(1).Range(〃A1:A1000〃)TotalValue=TotalValue+c.ValueNextAverageValue=TotalValue/Worksheet(1).
本文标题:Excel函数VBA教程基础入门(下)
链接地址:https://www.777doc.com/doc-4033097 .html