Excel函数VBA教程基础入门课件.ppt

上传人(卖家):晟晟文业 文档编号:4986538 上传时间:2023-01-30 格式:PPT 页数:35 大小:887.50KB
下载 相关 举报
Excel函数VBA教程基础入门课件.ppt_第1页
第1页 / 共35页
Excel函数VBA教程基础入门课件.ppt_第2页
第2页 / 共35页
Excel函数VBA教程基础入门课件.ppt_第3页
第3页 / 共35页
Excel函数VBA教程基础入门课件.ppt_第4页
第4页 / 共35页
Excel函数VBA教程基础入门课件.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

1、Excel函数函数VBA教程基础入门教程基础入门12021/2/21VBA简易教程简易教程(下)(下)22021/2/21创建过程创建过程 创建第一个过程需要两个基本步骤。首先,需要向工作簿中添加一个模块。接着需要向模块中添加一个工程。对于创建的每一个应用程序,只需添加一次模块。可以使用多个模块,但这是不必要的。某些开发者喜欢使用多个模块,以便根据他们的目的或者窗体对过程进行组织。在本练习中,创建的过程只显示一个消息框。在本练习中创建的过程只显示一个消息框。在本练习中使用Msgbox是为了提供一个可见的例子,虽然我们还没有介绍过Msgbox语句,但是在本例中将使用它。要创建该过程,请按如下步骤

2、进行:打开一个新工作簿。选择工具-宏-Visual Basic编辑器,打开VBA编辑器窗口。32021/2/21在VBA编辑器的左面,可以看到“工程资源管理器”窗口。在工程资源管理器窗口的“Thisworkbook上单击鼠标右键,选择“插入”-“模块”,这样就将一个模块添加到应用程序中了。(如果你没有看见“工程资源管理器”窗口,可以按 Ctrl+R)。选择“插入”“过程”,显示“添加过程”对话框。输入“第一个工程”作为过程名字。在“类型”分组框中,确认选择了“子程序”。单击“确定”按钮。这样一个新的过程就添加到模块中了。可以在模块中看到以 Public Sub第一个过程()开始,以End Su

3、b结束的语句结构。42021/2/216)在过程中插入光标,输入以下语句并回车:Msgbox 这是我的第一个过程 在输入在输入MsgboxMsgbox后,会自动弹出一个消息框告诉你有关这条命令的信息,后,会自动弹出一个消息框告诉你有关这条命令的信息,称之为自动列表技术。输入完成的过程如下所示:称之为自动列表技术。输入完成的过程如下所示:Public Sub 第一个过程()Msgbox 这是我的第一个过程 End SubVBAVBA对子程序和函数对子程序和函数有有如下的命名规则:如下的命名规则:*名字中可以包含字母名字中可以包含字母数字和下划线。数字和下划线。*名字中不能包含空格名字中不能包含空

4、格句号惊叹号,也不能包句号惊叹号,也不能包含字符含字符&$#.&$#.*名字最多可以包含名字最多可以包含255255个字符。个字符。52021/2/21运运行宏行宏 l 创建这个过程后,可以运行一下。l 运行一个过程有几种方法:l 可以直接使用“运行”菜单,“运行子程序/用户窗体”工具栏按钮或按下F5键。l 要运行一个过程,可以按照如下步骤:l 1)单击“运行子程序/用户窗体”工具栏按钮,过程执行并显示一个消息框。2)单击消息框之中的“确定”按钮,关闭该消息框。62021/2/21保存对模块所做的改变保存对模块所做的改变 要保存新过程要保存新过程,需要保存过程所驻留的工作簿需要保存过程所驻留的

5、工作簿.可以用可以用VBAVBA编辑器保存工作簿编辑器保存工作簿.具体步骤如下具体步骤如下:选择选择 文件文件-保存工作簿保存工作簿.因为本工作簿还没有保存过因为本工作簿还没有保存过,所以要给它命名所以要给它命名.输入输入“HOUR4”“HOUR4”作为文件名并按回车键作为文件名并按回车键,则工作簿和模块与则工作簿和模块与过程都保存下来了过程都保存下来了.72021/2/21变量变量 l 变量是用于临时保存数值的地方.l 每次应用程序运行时,变量可能包含不同的数值,而在程序运行时,变量的数值可以改变.l 为了说明为什么需要变量,可以按照如下步骤创建一个简单的过程:l 1)创建一个名为你叫什么名

6、字的过程.2)在过程中输入如下代码:Inputbox 输入你的名字:l 3)按下F5键运行过程,这时会显示一个输入框,要求输入你的名字.4)输入你的名字并按确定按钮,则结束该过程.你输入的名字到那里去了?如何找到用户在输入框中输入的信息?在这种情况下,需要使用变量来存储用户输入的结果.82021/2/21变量的数据类型变量的数据类型 使用变量的第一步是了解变量的数据类型.变量的数据类型控制变量允许保存何种类型的数据.表列出了VBA支持的数据类型,还列出了各种类型的变量所需要的存储空间和能够存储的数值范围.数据类型数据类型存储空间存储空间数值范围数值范围Byte1字节0-255Boolean2字

7、节True或者FalseInteger2字节-32768-32767Long(长整型)4字节-2147483648-2147483647Single4字节负值范围:-3.402823E38 -1.401298E-45正值范围:1.401298E-45 3.402823E38Object4字节任何引用对象String(长字符串)10字节+1字节/字符0-约20亿92021/2/21变量的数据类型变量的数据类型数据类型数据类型存储空间存储空间数值数值范围范围Double8字节负值范围:-1.79769313486232E308 -4947E-324正值范围:4.947E-324 1.7976931

8、3486232E308Decimal14字不包括小数时:+/-79228162514264337593543950335包括小数时:+/7.9228162514264337593543950335Currency8字节-922337203685477 922337203685477Date8字节1000年1月1日-9999年12月31日String(固定长度)字符串的长度1 约65400Varient(数字)16字节Double范围内的任何数值Varient(文本)22字节+1字节/字符数据范围和变长字符串相同102021/2/21用用DimDim语句创建变量语句创建变量(声明变量声明变量)现

9、在,你对变量可以使用的数据类型已经比较熟悉了,以下我们将创建变量.创建变量可以使用Dim语句,创建变量通常成为声明变量。DimDim语句的基本语法如下语句的基本语法如下:Dim变量名变量名AS数据类型数据类型变量名必须以字母开始变量名必须以字母开始,并且只能包含字母数字和特定的特殊字符并且只能包含字母数字和特定的特殊字符,不能包含空格句号惊叹号不能包含空格句号惊叹号,也不能包含字符也不能包含字符&$&$#.#.名字最大长度为名字最大长度为255255个字符个字符。112021/2/21变量命名的惯例变量命名的惯例 下表给出了推荐的变量命名惯例 数据类型短前缀长前缀 数据类型数据类型短前缀短前缀

10、长前缀长前缀ArrayaaryBooleanfbinBytebbitCurrencyccurDoubleddblDate/Timedtdtm/datIntegeriintLongllngObjectoobjSinglesngStringsstrVariantvvar122021/2/21使用数组使用数组如果你使用过其他编程序语言如果你使用过其他编程序语言,可能对数组已经比较熟悉了可能对数组已经比较熟悉了.数组是具有数组是具有相同数据类型并共同享有一个名字的一组变量的集合相同数据类型并共同享有一个名字的一组变量的集合.数组中的元素通过数组中的元素通过索引数字加以区分索引数字加以区分,定义数组的方

11、法如下定义数组的方法如下:Dim array_name(n)As type(其中n是数组元素的个数)例如例如,如果要创建保存如果要创建保存1010个学生名字的数组个学生名字的数组,可以用以下语句可以用以下语句:Dim s学生名字(9)As Integer 132021/2/21使用数组使用数组声明数组时的另一种方法是不给定大小。可以在程序运行时定义其大小。通过创建动态数组就可以做到。例如,你的程序要创建一表格,可以提示用户输入表格的行和列的数目。声明动态数组的语法如下:Dim dyn_array()As type对数组声明后可以在程序运行时用ReDim语句指定数组的大小:ReDim dyn_a

12、rray()(array_size)参数array_size代表数组的新大小。如果要保留数组的数值,请在ReDim语句后使用保留字Preserve,具体语法如下:ReDim Preserve dyn_array(array_size)142021/2/21变量赋值变量赋值 l 声明变量后就可以给变量赋值。请注意下列语句中为数组变量赋值时索引数字的使用。Dim i人数 As Integer Dim i考试成绩 As Integer Dim i As Integer i人数=inputbox(输入学生的人数:)ReDim Preserve i考试成绩(i数量)For i=1 to i人数 i考试成

13、绩(i)=inputbox(输入考试成绩&i)Next 152021/2/21使用常量使用常量 l 现在,你已经知道变量是存储非静态信息的存储容器.当存储静态信息时可以创建常量.它可以供程序多次使用而且便于记忆.l 比如圆周率比3.1415926好理解得多.要声明常量并设置常量的值,需要使用const语句.常量声明后,不能对它赋一个新的值.l 例如,假设需要声明一个常量来保存销项税率,可以使用以下语句:l 通常常量声明时用全大写字母以区分变量.const 销项税率 As Long=0.17 162021/2/21作用域作用域 到现在为止,已经学习了如何定义变量和常量,但是还不知道在何处定义.可

14、以在两个地 方定义常量和变量:过程中定义和在模块顶部一个名为“通用声明”的区域内定义.定义的位置决定租用域定义的位置决定租用域.在过程中声明,该变量只能在该过程中使用,其他过程中不能使用这个变量和常量,这中变量成为局部变量或过程级变量;在模块顶部声明的变量称为模块级变量,该变量在该模块的所有过程中都可以使用。172021/2/21作用域作用域还有一种等级的作用域称为公共级。公共级变量可以在应用程序的任何过程中使用,不论过程和变量是否定义在一个模块。这就使得公共级变量在使用中十分灵活,但是公共级变量在程序运行时一直保留在内存中,这样就占用了系统资源。要创建公共级变量,可以用Public语句,具体

15、语法如下:Public variablename As datatype要创建公共级常量,具体语法如下:Public const CONSTANAME datatype=value公共级变量或常量必须在模块顶部的公共级变量或常量必须在模块顶部的“通用声明通用声明”区域中定义。区域中定义。182021/2/21利用利用VBA设置工作表使用权限设置工作表使用权限 Excel Home 一般保护工作表采取的方法是用EXCEL菜单中的“保护”命令,有时这尚嫌不足,比如一些机密文件根本要让某些使用者无法看到,但又需要他来操作工作簿中的其他表,怎么办?可以打开VBA编辑器,打开“工程资源管理器”,双击该工

16、作表,现在出现的是设置该表的属性的编辑窗口,单击窗口左上的下拉列表框,选择 worksheet,这时再从该窗口右上方的列表框中选择Active(“激活”),这时自动显示如下的语句块:Private Sub Worksheet_Activate()End Sub 192021/2/21利用利用VBA设置工作表使用权限设置工作表使用权限在其中加入代码:在其中加入代码:(假设用假设用“123”“123”作为密码作为密码,Sheet“,Sheet“机密文档机密文档”为限制为限制权限文档权限文档,sheet,sheet普通文档普通文档 为工作簿中你认为任何适合的工作表为工作簿中你认为任何适合的工作表)I

17、f Application.InputBox(请输入操作权限密码:)=123 Then Range(A1).Select Else Msgbox 密码错误,即将退出!Sheets(普通文档).Select End if 202021/2/21利用利用VBA设置工作表使用权限设置工作表使用权限l 完整的程序如下:完整的程序如下:Private Sub Worksheet_Activate()If Application.InputBox(请输入操作权限密码:)=123 Then Range(A1).Select Else MsgBox 密码错误,即将退出!Sheets(普通文档).Select

18、End If End Sub212021/2/21利用利用VBA设置工作表使用权限设置工作表使用权限 这样做仍有一个问题,就是越权使用者仍会看到一些文件的片段,即在提示这样做仍有一个问题,就是越权使用者仍会看到一些文件的片段,即在提示密码的那段时间。你可以这样做,用上述方法选择工作表的密码的那段时间。你可以这样做,用上述方法选择工作表的DeactivateDeactivate事件事件,输入以下代码:输入以下代码:Sheets(机密文档).Cells.Font.ColorIndex=2 这段程序使得此工作表在不被激活时,所有文字为白色。这段程序使得此工作表在不被激活时,所有文字为白色。然后,在第

19、一个程序中的然后,在第一个程序中的Range(A1).SelectRange(A1).Select后插入一行,写入以下代码:后插入一行,写入以下代码:ActiveSheet.Cells.Font.ColorIndex=56这段程序,在你输入正确密码后,将该表所有文字转变为深灰色。这段程序,在你输入正确密码后,将该表所有文字转变为深灰色。222021/2/21利用利用VBA设置工作表使用权限设置工作表使用权限完整的程序如下:完整的程序如下:Private Sub Worksheet_Activate()If Application.InputBox(请输入操作权限密码:)=123 Then Ra

20、nge(A1).Select Sheets(机密文档).Cells.Font.ColorIndex=56 Else MsgBox 密码错误,即将退出!Sheets(普通文档).Select End If232021/2/21提高提高VBAVBA运行效率运行效率由于Microsoft Office办公套件的广泛应用,以及该软件版本的不断提升,功能不断完善,在Office办公套件平台上开发出的VBA应用程序越来越多,而VBA是一种宏语言,在运行速度上有很大的限制。因此VBA编程的方法直接关系到VBA程序运行的效率,本文列举了一些提高VBA程序运行效率的方法。方法方法1 1:尽量使用:尽量使用VBA

21、VBA原有的属性、方法和原有的属性、方法和WorksheetWorksheet函数函数由于Excel对象多达百多个,对象的属性、方法、事件多不胜数,对于初学者来说可能对它们不全部了解,这就产生了编程者经常编写与Excel对象的属性、方法相同功能的VBA代码段,而这些代码段的运行效率显然与Excel对象的属性、方法完成任务的速度相差甚大。242021/2/21提高提高VBAVBA运行效率运行效率ForEachcInWorksheet(1).Range(A1:A1000)TotalValue=TotalValuec.ValueNextAverageValue=TotalValue/Workshee

22、t(1).Range(A1:A1000).Rows.Count如求平均工资的例子:如求平均工资的例子:例如用Range的属性 CurrentRegion来返回Range 对象,该对象代表当前区。(当前区指以任意空白行及空白列的组合为边界的区域)。同样功能的VBA代码需数十行。因此编程前应尽可能多地了解Excel对 象的属性、方法。充分利用Worksheet函数是提高程序运行速度的极度有效的方法。252021/2/21提高提高VBAVBA运行效率运行效率而下面代码程序比上面例子快得多:而下面代码程序比上面例子快得多:AverageValue=Application.WorksheetFuncti

23、on.Average(Worksheets(1).Range(A1:A1000)其它函数如Count,Counta,Countif,Match,Lookup等等,都能代替相同功能的VBA程序代码,提高程序的运行速度。尤其在循环中每一个Excel对象的属性、方法的调用都需要通过OLE接口的一个或多个调用,这些OLE调用都是需要时间的,减少使用对象引用能加快VBA代码的运行。方法方法2:尽量减少使用对象引用:尽量减少使用对象引用262021/2/21提高提高VBAVBA运行效率运行效率例如例如 1 1使用使用WithWith语句。语句。Workbooks(1).Sheets(1).Range(A1

24、:A1000).Font.Name=PayWorkbooks(1).Sheets(1).Range(A1:A1000).Font.FontStyle=Bold.则以下语句比上面的快则以下语句比上面的快WithWorkbooks(1).Sheets(1).Range(A1:A1000).Font.Name=Pay.FontStyle=Bold.EndWith272021/2/21提高提高VBAVBA运行效率运行效率2 2使用对象变量。使用对象变量。如果你发现一个对象引用被多次使用,则你可以将此对象用如果你发现一个对象引用被多次使用,则你可以将此对象用SetSet 设置为设置为对象变量,以减少对对

25、象的访问。如:对象变量,以减少对对象的访问。如:Workbooks(1).Sheets(1).Range(A1).Value=100 Workbooks(1).Sheets(1).Range(A2).Value=200则以下代码比上面的要快:则以下代码比上面的要快:Set MySheet=Workbooks(1).Sheets(1)MySheet.Range(A1).Value=100 MySheet.Range(A2).Value=200282021/2/21提高提高VBAVBA运行效率运行效率3 3在循环中要尽量减少对象的访问。在循环中要尽量减少对象的访问。For k=1 To 1000

26、Sheets(Sheet1).Select Cells(k,1).Value=Cells(1,1).Value Next k则以下代码比上面的要快:则以下代码比上面的要快:Set TheValue=Cells(1,1).Value Sheets(Sheet1).Select For k=1 To 1000 Cells(k,1).Value=TheValue Next k292021/2/21提高提高VBAVBA运行效率运行效率方法方法3 3:减少对象的激活和选择减少对象的激活和选择如果你的通过录制宏来学习VBA的,则你的VBA程序里一定充满了对象的激活和选择,例如Workbooks(XXX).

27、Activate,Sheets(XXX).Select,Range(XXX).Select等,但事实上大多数情况下这些操作不是必需的。例如:例如:Sheets(Sheet3).Select Range(A1).Value=100 Range(A2).Value=200可改为:可改为:With Sheets(Sheet3).Range(A1).Value=100.Range(A2).Value=200End With302021/2/21提高提高VBAVBA运行效率运行效率方法方法4 4:关闭屏幕更新:关闭屏幕更新如果你的VBA程序前面三条做得比较差,则关闭屏幕更新是提高VBA程序运行速度的最有

28、效的方法,缩短运行时间2/3左右。关闭屏幕更新的方法:关闭屏幕更新的方法:Application.ScreenUpdate=False请不要忘记请不要忘记VBAVBA程序运行结束时再将该值设回来:程序运行结束时再将该值设回来:Application.ScreenUpdate=True312021/2/21l 用过 Excel 97 里的加载宏 定时保存 吗?可惜它的源程序是加密的,现在就上传一篇介绍实现它的文档。在 Office 里有个方法是 application.ontime,具体函数如下:expression.OnTime(EarliestTime,Procedure,LatestTim

29、e,Schedule)如 果想进一步了解,请参阅 Excel的帮助。l 这个函数是用来安排一个过程在将来的特定时间运行,(可为某个日期的指定时间,也可为指定的时间段之后)。通过这个函数我们就可以在 Excel 里编写自己的定时程序了。下面就举两个例子来说明它。l 1.1.在下午在下午 17:00:0017:00:00 的时候显示一个对话框。的时候显示一个对话框。Sub Run_it()Application.OnTime TimeValue(17:00:00),Show_my_msg 设置定时器在 17:00:00 激活,激活后运行 Show_my_msg。End Sub Sub Show_m

30、y_msg()msg=MsgBox(现在是 17:00:00!,vbInformation,自定义信息)End Sub322021/2/21l 2.模仿 Excel 97 里的 自动保存宏,在这里定时 5 秒出现一次 lSub auto_open()MsgBox 欢迎你,在这篇文档里,每 5 秒出现一次保存的提示!,vbInformation,请注意!Call runtimer 打开文档时自动运行 End Sub Sub runtimer()Application.OnTime Now+TimeValue(00:00:05),saveit Now+TimeValue(00:15:00)指定在当

31、前时间过 5 秒钟开始运行 Saveit 这个过程。End Sub332021/2/21 以上只是两个简单的例子,有兴趣的话,可以利用 Application.Ontime 这个函数写出更多更有用的定时程序Sub SaveIt()msg=MsgBox(朋友,你已经工作很久了,现在就存盘吗?&Chr(13)_&选择是:立刻存盘&Chr(13)_&选择否:暂不存盘&Chr(13)_&选择取消:不再出现这个提示,vbYesNoCancel+64,休息一会吧!)提示用户保存当前活动文档。If msg=vbYes Then ActiveWorkbook.Save Else If msg=vbCancel Then Exit Sub Call runtimer 如果用户没有选择取消就再次调用 Runtimer End Sub342021/2/21Thank You世界触手可及世界触手可及携手共进,齐创精品工程携手共进,齐创精品工程352021/2/21

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(Excel函数VBA教程基础入门课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|