《Excel函数VBA教程基础入门(下)》由会员分享,可在线阅读,更多相关《Excel函数VBA教程基础入门(下)(33页珍藏版)》请在金锄头文库上搜索。
1、VBA简易教程 (下)创建过程 创建第一个过程需要两个基本步骤。 首先,需要向工作簿中添加一个模块。接着需要向模块中添加一个工程。 对于创建的每一个应用程序,只需添加一次模块。可以使用多个模块,但这是 不必要的。某些开发者喜欢使用多个模块,以便根据他们的目的或者窗体对过 程进行组织。在本练习中,创建的过程只显示一个消息框。 在本练习中创建 的过程只显示一个消息框。在本练习中使用Msgbox是为了提供一个可见的例 子,虽然我们还没有介绍过Msgbox语句,但是在本例中将使用它。要创建该 过程,请按如下步骤进行:打开一个新工作簿。选择“工具“-“宏“-“Visual Basic编辑器“,打开VBA
2、编辑器窗口。在VBA编辑器的左面,可以看到“工程资源管理器”窗口。 在工程资源管理器窗口的“Thisworkbook“上单击鼠标右键, 选择“插入”-“模块”,这样就将一个模块添加到应用程序中了。 (如果你没有看见“工程资源管理器”窗口,可以按 Ctrl+R)。选择“插入”“过程”,显示“添加过程”对话框。输入“第一个工程”作为过程名字。 在“类型”分组框中,确认选择了“子程序”。单击“确定”按钮。这样一个新的过程就添加到模块中了。可以在模块中看到以 Public Sub 第一个过程()开始,以End Sub结束的语句结构。6)在过程中插入光标,输入以下语句并回车: Msgbox “这是我的第
3、一个过程“ 在输入Msgbox后,会自动弹出一个消息框告诉你有关这条命令的信息, 称之为自动列表技术。输入完成的过程如下所示:Public Sub 第一个过程() Msgbox “这是我的第一个过程“ End SubVBA对子程序和函数有 如下的命名规则: * 名字中可以包含字 母数字和下划线。 * 名字中不能包含空 格句号惊叹号,也不能 包含字符 & $ #. * 名字最多可以包含 255个字符。 运行宏 l 创建这个过程后,可以运行一下。 l 运行一个过程有几种方法: l 可以直接使用“运行”菜单,“运行子程序/用户窗体”工具栏按钮 或按下F5键。 l 要运行一个过程,可以按照如下步骤:
4、l 1)单击“运行子程序/用户窗体”工具栏按钮,过程执行并显示一个 消息框。 2)单击消息框之中的“确定”按钮,关闭该消息框。 保存对模块所做的改变 要保存新过程,需要保存过程所驻留的工作簿.可以用 VBA编辑器保存工作簿.具体步骤如下: 选择“文件“-“保存工作簿“.因为本工作簿还没有保存过, 所以要给它命名.输入“HOUR4”作为文件名并按回车键,则工作簿和模块与 过程都保存下来了. 变量 l 变量是用于临时保存数值的地方. l 每次应用程序运行时,变量可能包含不同的数值,而在程序运行时,变 量的数值可以改变. l 为了说明为什么需要变量,可以按照如下步骤创建一个简单的过程: l 1)创建
5、一个名为“你叫什么名字“的过程. 2)在过程中输入如下代码: Inputbox “输入你的名字:“ l 3)按下F5键运行过程,这时会显示一个输入框,要求输入你的名字. 4)输入你的名字并按“确定“按钮,则结束该过程. 你输入的名字到那 里去了?如何找到用户在输入框中输入的信息?在这种情况下,需要使 用变量来存储用户输入的结果. 变量的数据类型 使用变量的第一步是了解变量的数据类型.变量的数据类型控制变量允许保存 何种类型的数据.表列出了VBA支持的数据类型,还列出了各种类型的变量所需要 的存储空间和能够存储的数值范围.数据类型存储空间数值范围Byte1字节0 - 255Boolean2字节T
6、rue或者FalseInteger2字节-32768 - 32767 Long(长整型)4字节-2147483648 - 2147483647Single4字节负值范围: -3.402823E38 -1.401298E-45 正值范围: 1.401298E-45 3.402823E38 Object4字节任何引用对象String(长字符串)10字节+1字节/字符0 - 约20亿变量的数据类型数据类型存储空间数值范围Double8字节负值范围: -1.79769313486232E308 - 494065645841247E-324 正值范围: 4.94065645841247E-324 1.7
7、9769313486232E308 Decimal14字不包括小数时: +/-79228162514264337593543950335 包括小数时: +/7.9228162514264337593543950335 Currency8字节-922337203685477 922337203685477Date8字节1000年1月1日 - 9999年12月31日String(固定长度)字符串的长度1 约65400Varient(数字)16字节Double范围内的任何数值Varient(文本)22字节+1字节/字符数据范围和变长字符串相同用Dim语句创建变量(声明变量) 现在,你对变量可以使用的
8、数据类型已经比较熟悉了,以下我们将创建变量. 创建变量可以使用Dim语句,创建变量通常成为“声明变量“。Dim语句的基本语法如下: Dim 变量名 AS 数据类型变量名必须以字母开始,并且只能包含字母数字和特定的特殊字符, 不能包含空格句号惊叹号,也不能包含字符 & $ #. 名字最大长度为255个字符。变量命名的惯例 下表给出了推荐的变量命名惯例 数据类型短前缀长前缀 数据类型短前缀长前缀ArrayaaryBooleanfbinBytebbitCurrencyccurDoubleddblDate/Timedtdtm/ datIntegeriintLongllngObjectoobjSingl
9、esngStringsstrVariantvvar使用数组如果你使用过其他编程序语言,可能对数组已经比较熟悉了.数组是具有 相同数据类型并共同享有一个名字的一组变量的集合.数组中的元素通过 索引数字加以区分,定义数组的方法如下:Dim array_name(n) As type(其中n是 数组元素 的个数)例如,如果要创建保存10个学生名字的数组,可以用以下语句:Dim s学生名字(9) As Integer 使用数组声明数组时的另一种方法是不给定大小。可以在程序运行时定义其大 小。通过创建动态数组就可以做到。例如,你的程序要创建一表格, 可以提示用户输入表格的行和列的数目。 声明动态数组的语
10、法如下:Dim dyn_array() As type对数组声明后可以在程序运行时用ReDim语句指定数组的大小: ReDim dyn_array()(array_size)参数array_size代表数组的新大小。如果要保留数组的数值,请在 ReDim语句后使用保留字Preserve,具体语法如下:ReDim Preserve dyn_array(array_size)变量赋值 l 声明变量后就可以给变量赋值。请注意下列语句中为数组变量赋值时 索引数字的使用。 Dim i人数 As Integer Dim i考试成绩 As Integer Dim i As Integer i人数 = inp
11、utbox(“输入学生的人数:“) ReDim Preserve i考试成绩(i数量) For i = 1 to i人数 i考试成绩(i) = inputbox(“输入考试成绩“& i ) Next 使用常量 l 现在,你已经知道变量是存储非静态信息的存储容器.当存储静态信息 时可以创建常量.它可以供程序多次使用而且便于记忆. l 比如圆周率比3.1415926好理解得多. 要声明常量并设置常量的值, 需要使用const语句.常量声明后,不能对它赋一个新的值. l 例如,假设需要声明一个常量来保存销项税率,可以使用以下语句: l 通常常量声明时用全大写字母以区分变量. const 销项税率 A
12、s Long = 0.17 作用域 到现在为止,已经学习了如何定义变量和常量,但是还不知道在何处定义.可以在两个地 方定义常量和变量: 过程中定义和在模块顶部一个名为“通用声明”的区域内定义.定义的位置决定租用域.在过程中声明,该变量只能在该过程中使用,其他过程中不能使用这个 变量和常量,这中变量成为局部变量或过程级变量; 在模块顶部声明的变量称为模块级变量,该变量在该模块的所有过程中 都可以使用。作用域还有一种等级的作用域称为公共级。 公共级变量可以在应用程序的任何过程中使用,不论过程和变量是否定义在一个模块。 这就使得公共级变量在使用中十分灵活,但是公共级变量在程序运行时一直保留在 内存中
13、,这样就占用了系统资源。要创建公共级变量,可以用Public语句, 具体语法如下:Public variablename As datatype要创建公共级常量,具体语法如下:Public const CONSTANAME datatype = value公共级变量或常量必须在模块顶部的“通用声明”区域中定义。利用VBA设置工作表使用权限 Excel Home 一般保护工作表采取的方法是用EXCEL菜单中的“保护”命令, 有时这尚嫌不足,比如一些机密文件根本要让某些使用者无法看到, 但又需要他来操作工作簿中的其他表,怎么办? 可以打开VBA编辑器,打开“工程资源管理器”,双击该工作表,现在出现
14、的是 设置该表的属性的编辑窗口,单击窗口左上的下拉列表框,选择 worksheet , 这时再从该窗口右上方的列表框中选择Active(“激活”),这时自动显示 如下的语句块:Private Sub Worksheet_Activate()End Sub 利用VBA设置工作表使用权限在其中加入代码:(假设用“123”作为密码,Sheet“机密文档”为限制 权限文档,sheet“普通文档“为工作簿中你认为任何适合的工作表)If Application.InputBox(“请输入操作权限密码:“) = 123 Then Range(“A1“).Select Else Msgbox “密码错误,即将
15、退出!“ Sheets(“普通文档“).Select End if 利用VBA设置工作表使用权限l 完整的程序如下:Private Sub Worksheet_Activate() If Application. InputBox(“请输入操作权限密码:“) = 123 Then Range(“A1“).Select Else MsgBox “密码错误,即将退出!“ Sheets(“普通文档“).Select End If End Sub利用VBA设置工作表使用权限这样做仍有一个问题,就是越权使用者仍会看到一些文件的片段,即在提示 密码的那段时间。你可以这样做,用上述方法选择工作表的Deact
16、ivate事件, 输入以下代码:Sheets(“机密文档“).Cells.Font.ColorIndex = 2 这段程序使得此工作表在不被激活时,所有文字为白色。 然后,在第一个程序中的Range(“A1“).Select后插入一行,写入以下代码:ActiveSheet.Cells.Font.ColorIndex = 56这段程序,在你输入正确密码后,将该表所有文字转变为深灰色。利用VBA设置工作表使用权限完整的程序如下:Private Sub Worksheet_Activate() If Application.InputBox(“请输入操作权限密码:“) = 123 Then Range(“A1“).Select Sheets(“机密文档“).Cells.Font.ColorIndex = 56 Else MsgBox “密码错误,即将退出!“ Sheets(“普通文档“).Select End If提高VBA运行效率由于Microsoft Office办公套件