Excel-VBA-编程教程-2015-完整版(6)

2018-12-17 09:55

Excel-VBA-编程教程-2015-完整版

这段程序使得此工作表在不被激活时,所有文字为白色。然后,在第一个程序中的 Range(\后插入一行,写入以下代码: 11

-----------------------页面28-----------------------

VisualBASIC程序设计网络教学橄榄树 整理

ActiveSheet.Cells.Font.ColorIndex=56

这段程序,在你输入正确密码后,将该表所有文字转变为深灰色。 完整的程序如下:

PrivateSubWorksheet_Activate()

IfApplication.InputBox(\请输入操作权限密码:\Range(\

Sheets(\机密文档\Else

MsgBox\密码错误,即将退出!\Sheets(\普通文档\EndIf EndSub

第六课提高Excel中VBA的效率

由于MicrosoftOffice办公套件的广泛应用,以及该软件版本的不断提升,功能不断完善,

在Office办公套件平台上开发出的的VBA应用程序越来越多,而VBA是一种宏语言,在运行速 度上有很大的限制。因此VBA编程的方法直接关系到VBA程序运行的效率,本文列举了一些提 高VBA程序运行效率的方法。

方法1:尽量使用VBA原有的属性、方法和Worksheet函数

由于Excel对象多达百多个,对象的属性、方法、事件多不胜数,对于初学者来说可能对

它们不全部了解,这就产生了编程者经常编写与Excel对象的属性、方法相同功能的VBA代码 段,而这些代码段的运行效率显然与Excel对象的属性、方法完成任务的速度相差甚大。例如 用Range的属性CurrentRegion来返回Range对象,该对象代表当前区。(当前区指以任意空 白行及空白列的组合为边界的区域)。同样功能的VBA代码需数十行。因此编程前应尽可能多地 了解Excel对象的属性、方法。

充分利用Worksheet函数是提高程序运行速度的极度有效的方法。如求平均工资的例子: ForEachcIn

Worksheet(1).Range(″A1:A1000″) TotalValue=TotalValue+c.Value Next

AverageValue=TotalValue/Worksheet(1).Range(″A1:A1000″).Rows.Count 而下面代码程序比上面例子快得多:

Excel-VBA-编程教程-2015-完整版

Excel-VBA-编程教程-2015-完整版

AverageValue=Application.WorksheetFunction.Average(Worksheets(1).Range(″ A1:A1000″))

其它函数如Count,Counta,Countif,Match,Lookup等等,都能代替相同功能的VBA程序代 码,提高程序的运行速度。

方法2:尽量减少使用对象引用,尤其在循环中

每一个Excel对象的属性、方法的调用都需要通过OLE接口的一个或多个调用,这些OLE 调用都是需要时间的,减少使用对象引用能加快VBA代码的运行。例如 1.使用With语句。

Workbooks(1).Sheets(1).Range(″A1:A1000″).Font.Name=″Pay″

Workbooks(1).Sheets(1).Range(″A1:A1000″).Font.FontStyle=″Bold″... 则以下语句比上面的快

WithWorkbooks(1).Sheets(1).Range(″A1:A1000″).Font .Name=″Pay″ .FontStyle=″Bold″ ...

EndWith

2.使用对象变量。

如果你发现一个对象引用被多次使用,则你可以将此对象用Set设置为对象变量,以减少 对对象的访问。如: 12

-----------------------页面29-----------------------

VisualBASIC程序设计网络教学橄榄树 整理

Workbooks(1).Sheets(1).Range(″A1″).Value=100 Workbooks(1).Sheets(1).Range(″A2″).Value=200 则以下代码比上面的要快:

SetMySheet=Workbooks(1).Sheets(1) MySheet.Range(″A1″).Value=100 MySheet.Range(″A2″).Value=200 3.在循环中要尽量减少对象的访问。 Fork=1To1000

Sheets(″Sheet1″).Select Cells(k,1).Value=Cells(1,1).Value Nextk

则以下代码比上面的要快: SetTheValue=Cells(1,1).Value Sheets(″Sheet1″).Select Fork=1To1000

Cells(k,1).Value=TheValue

Excel-VBA-编程教程-2015-完整版

Excel-VBA-编程教程-2015-完整版

Nextk

方法3:减少对象的激活和选择

如果你的通过录制宏来学习VBA的,则你的VBA程序里一定充满了对象的激活和选择,例 如Workbooks(XXX).Activate、Sheets(XXX).Select、Range(XXX).Select等,但事实上大多数 情况下这些操作不是必需的。例如 Sheets(″Sheet3″).Select Range(″A1″).Value=100 Range(″A2″).Value=200 可改为:

WithSheets(″Sheet3″) .Range(″A1″).Value=100 .Range(″A2″).Value=200 EndWith

方法4:关闭屏幕更新

如果你的VBA程序前面三条做得比较差,则关闭屏幕更新是提高VBA程序运行速度的最有 效的方法,缩短运行时间2/3左右。关闭屏幕更新的方法: Application.ScreenUpdate=False

请不要忘记VBA程序运行结束时再将该值设回来: Application.ScreenUpdate=True

以上是提高VBA运行效率的比较有效的几种方法。

第七课如何在Excel里使用定时器

用过Excel97里的加载宏\定时保存\吗?可惜它的源程序是加密的,现在就上传一篇 介绍实现它的文档。

在Office里有个方法是application.ontime,具体函数如下: expression.OnTime(EarliestTime,Procedure,LatestTime,Schedule) 如果想进一步了解,请参阅Excel的帮助。

这个函数是用来安排一个过程在将来的特定时间运行,(可为某个日期的指定时间,也可为 指定的时间段之后)。通过这个函数我们就可以在Excel里编写自己的定时程序了。下面就举 两个例子来说明它。

1.在下午17:00:00的时候显示一个对话框。 SubRun_it()

Application.OnTimeTimeValue(\'设置定时器在17:00:00激活,激活后运行Show_my_msg。 EndSub 13

-----------------------页面30-----------------------

Excel-VBA-编程教程-2015-完整版

Excel-VBA-编程教程-2015-完整版

VisualBASIC程序设计网络教学橄榄树 整理

SubShow_my_msg()

msg=MsgBox(\现在是17:00:00!\自定义信息\EndSub

2.模仿Excel97里的\自动保存宏\在这里定时5秒出现一次 Subauto_open()

MsgBox\欢迎你,在这篇文档里,每5秒出现一次保存的提示!\请注意! \

Callruntimer'打开文档时自动运行 EndSub

Subruntimer()

Application.OnTimeNow+TimeValue(\

'Now+TimeValue(\指定在当前时间过5秒钟开始运行Saveit这个过程。 EndSub SubSaveIt()

msg=MsgBox(\朋友,你已经工作很久了,现在就存盘吗?\&\选择是:立刻存盘\&\选择否:暂不存盘\

&\选择取消:不再出现这个提示\休息一会吧!\'提示用户保存当前活动文档。

Ifmsg=vbYesThenActiveWorkbook.SaveElseIfmsg=vbCancelThenExitSub Callruntimer'如果用户没有选择取消就再次调用Runtimer EndSub

以上只是两个简单的例子,有兴趣的话,可以利用Application.Ontime这个函数写出更多更 有用的定时程序。 14

-----------------------页面31-----------------------

三、学习微软Excel2002VBA编程和XML,ASP技术

ASP已经趋于淘汰了,Vbscript将慢慢退出舞台了,其实他是vba的子集,相比vba来讲更容易 一些,用不着深入学

摘自2004-3-8hzg7818版主的答复

作者:JulittaKorol翻译:TigerChenNov28’2004

本书展示了Excel2002在标准用户界面之外什么是可行的。如果你曾经想不使用菜单来打开

一个新的工作表,或者创建一个充分自动化的自定义窗体来收集数据和在工作表里存储结果,那么 你必须学习一些编程。本书教你如何通过将一些费时的和重复的工作交给Excel,从而更加成果丰 富。使用Excel内置语言,VBA(VisualBasicforApplications),你将给自己或他人带来非常高

的自动化程度的电子表格。通过使用许多内置的编程工具,你做得可以比想象中容易得多。你不要

Excel-VBA-编程教程-2015-完整版

Excel-VBA-编程教程-2015-完整版

增加额外费用,除非你想熟悉Excel背后的秘密。在Excel窗口下,同时按下Alt+F11,你将进入VB 编辑器界面——Excel的编程界面。既然这个保护得很好的秘密已经公开了,就让我告诉你更多一 些。除了VBA之外,本书还介绍了两种可以和Excel并用的热门英特网技术。一种是ASP(Active ServerPages),另一种是XML(ExtensibleMarkupLanguage)。你也可以学习到许多其它的支持

技术。因此,如果你真正想要获得一些热门技术,请立即购买本书,并且不要浪费时间,马上开始 学习。LearnMicrosoftExcel2002VBAProgrammingwithXMLandASP带领你从始至终创建VBA

过程,VBScripts,ASP页面,XML文件和XSL工作表。沿着这条路,有许多详细的,适用的“如 何做”例子和插图。本书的方法是“由做而学”。本书的前面几章介绍了一些基本的VBA概念,循序 渐进,复杂的主题在后面的章节。十七章中的每一章是按循序的。此外,本书还由四章附录,讨论 在Excel里针对一些特殊方面的操作和编程。本书可以当作是一种在办公室或家里学习的课程。许 多课程都有前提条件,本书也不例外。LearnMicrosoftExcel2002VBAProgrammingwithXMLand

ASP不会向你介绍Excel的基本东西,例如菜单和快捷键。我们假设你已经喜欢使用Excel,并且有 兴趣学习如何与Excel在它自己的语言里交流,学习如何将它与现在的英特网技术结合。

第一章电子表格自动化简介和了解宏命令

http://club.excelhome.net/dispbbs.asp?boardID=2&ID=72173&page=5

你准备好了增进你的微软Excel2002电子表格的智能吗?通过将日常工作自动化,你可以使

你的电子表格更快,更有效。本章带领你步入使用宏命令来加速电子表格的过程。你将学到宏是什 么,如何以及什么时候使用它们,乃至如何编写和修改宏代码。开始学习宏命令很简单。创建宏并 不需要什么,只是一些你已经拥有的知识——基本的微软Excel2002菜单知识和电子表格概念。 你准备好开始了吗?确保你坐在计算机前并且打开了Excel2002。

1了解宏

宏是一些储存了一系列命令的程序。当你创建一个宏命令的时候,你只是将一系列的键盘输入结合 成一个简单的命令,你以后可以“回演”这个命令。因为宏命令可以减少复杂任务的步骤,使用宏 命令可以显著得减少你花在创建,设置格式,修改和打印工作表的时间。你可以通过Excel内置的 录制工具来创建宏命令,也可以在代码编辑器里面直接写代码。微软Excel2002电子表格具有强 大的编程功能。

技巧1-1:普通语言

Excel5是市场上第一个使用VBA的软件。从那以后,VBA开拓了在所有微软办公应用软件中的应用。 这意味着你从本书中学习的VBA将来同样可以应用到其它微软办公软件中,例如:Word,PowerPoint, OutlookorAccess

2宏命令的普通应用

微软Excel2002带来了很多内置,节省时间的特点,这些使你工作得更快更聪明。在你决定用宏 命令来自动化工作表任务前,确保没有现成的内置工具来做这项任务。然而,当你发现你需要反复 地做一些动作,或者Excel没有提供一个内置工具帮你完成该任务,那么创建一个宏命令吧。宏命 令可以使你能够将工作表的任何部分工作自动化。例如,你可以自动化数据录入——创建一个宏命 令在工作表输入标题或者用新标签取代列标题。宏命令可以帮你检查选中的工作表区域里的重复 15

Excel-VBA-编程教程-2015-完整版


Excel-VBA-编程教程-2015-完整版(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:环卫站车队管理制度

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: