首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 软件教学-> 图文处理
避免vba陷阱--有时,vba使你避免危险_visualbasic教程
作者:网友供稿 点击:0
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
作为Access-Office-VBADVISOR的技术编辑,我见过许多编程风格。我常常惊异于VBA程序员能够找到不同的方法来执行相同的任务,同时我也对VBA能够容忍如此差的技术而感到沮丧。VBA是一种相当宽容的语言,几乎能够运行一切那些糟糕的程序员所赋予它的任务。

在我评价和测试本刊的文章之前,请首先关注五、六个我最经常遇到的编程错误。有一些编程手段对于每一个VBA代码都是必不可少的。

毫无疑问,我所遇到的最常见的问题如下:

Dimrs1,rs2AsRecordset

此处到底是什么类型的变量呢?在其他编程语言里,等价的语句将导致两个数据记录型变量,而在VBA中,你得到的是一个数据记录(rs2)和另一个变量(rs1)。虽然变量rs1运行时毫无错误,并且程序运行顺利,但是程序还是处于一种相当不确定的状态中。

一个变量应当是参数可变的一种特定数据类型,它能够被赋予任何没有问题的数值,因此,变量rs1能够按照下面表述的形式接受任何数据记录型赋值:

Setrs1=CurrentDb.OpenRecordset(“tblEmloyees”,dbOpenDynaset)

问题在于每当代码中的rs1被执行时,VBA引擎都必须指明rs1变量的具体数值,在VBA决定如何处理该变量时,需要消耗额外的CPU时钟周期。而且,所有变量都会比等价的单个数据类型占据更多的内存。这些变量会降低应用程序的性能,使运行更加缓慢。

此处还有一个例子,变量strMsg具有如下定义:

DimstrMsg

任何包含strMsg的语句都将肯定比strMsg已经被定义为一个字符串的情况下要运行的缓慢。

如果你对变量指定数据类型,对其进行定义的基础是要使你的应用程序运行的更快、更可靠。

另外一个常见的问题是糟糕的代码缩排。下述代码段让人难以理解,如果将For…Next和If…EndIf循环进行仔细地缩排效果就会好得多:

Fori=1to20

IfCondition1Then

CallSomeOperation1

IfCondition2Then

CallAnotherOperation

EndIf

EndIf

CallAthirdOperation

Next

逻辑相关的语句,尤其是那些被当作独立单元进行执行的语句,应当缩进两格。如果你没有花一点时间指明一段逻辑相关的语句之间的逻辑关系,你可能会消耗更多的时间,因此进行适当的代码缩排是值得的。

接下来的问题不太好用书面形式进行表述。因为刊物页面的幅宽有限,我不能将我所见到的长达470个字符的语句展示给你们。假设页面是标准的65个字符的幅宽,那么仅仅这个单句,就要换行8次,因此在编辑时,就要不得不向右滚动屏幕8次才能看清全句。尽管能够这样做,你也不可能一下把握全句的逻辑关系。显然,采用少量的分隔符将本长句划分为一些更短的句子,将便于管理。

与长句类似,但并不象那么严重的一个问题如下:

DimiAsInteger,strAsString,rs_

AsRecordset,dbAsDatabase,db1AsDouble

在单行中进行许多定义,尤其当最后一个句子的末尾远远超出了编辑窗口的右端边界,将使得在大量的定义中查找某一个定义变得更加困难。

此处还有一个常常易犯的编程问题:

If(Condition)Then

 rs.AddNew

 rs.FirstName=txtFirstName

 rs.LastName=txtLastName

 rs.Address=txtAddress

 rs.City=txtCity

 rs.State=txtState

 rs.ZipCode=txtZipCode

 rs..Update

EndIf

VBA提供特别的With…Endwith结构处理同一个对象的多个成分:

If(Condition)Then

 Withrs

  .AddNew

  !FirstName=txtFirstName

  !LastName=txtLastName

  !Address=txtAddress

  !City=txtCity

  !State=txtState

  !ZipCode=txtZipCode

.Update

 EndWith

EndIf

采用With…EndWith结构不仅可以使得表述简单,而且执行起来相当快。一旦VBA获得rs对象的句柄,那么With…EndWith代代码码块中的每一个成分将执行得更快。

VBA的诸多优点中有一条是其对语句的使用方式具有较高的宽容性,在C或Pascal程序中可能会引起崩溃的代码也许能够在VBA中毫无错误地得以运行,但是这样的灵活性常常会付出代价。体系结构糟糕的VBA程序或其子程序比精心构造的程序运行得要缓慢,并且效率低下,另外调试和维护起来也更加困难。以上所有问题在矫正时都只需耗费少许的时间,但是花在学习和提高VBA代码编制技术上的时间将由更快的执行速度和更容易的日常维护来获得补偿。->


文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·Java Reflection (JAVA反射)-JSP教程,Java技巧及代码
·WebServices入门-.NET教程,Web Service开发
·如何在c#中使用mapx5.0(二)-.NET教程,C#语言
·用java启动记事本程序,并输入内容-JSP教程,Java技巧及代码
·正则表达式-ASP教程,正则表达式
·sql server中的外键约束-数据库专栏,SQL Server
·java中的基于套结字(socket)的通信 一. 一个双人单方向通信例子-JSP教程,Java技巧及代码
·图解利用Eclipse3+Lomboz3+Tomcat开发JSP --1.环境-JSP教程,Jsp/Servlet
·EditPlus+NAnt构建轻巧的.NET开发环境-.NET教程,Asp.Net开发
·ASP.NET2.0下利用javascript实现TreeView中的checkbox全选-.NET教程,Asp.Net开发
最新文章
·photoshop简单为美女照片瘦身及调色_photoshop教程
·fireworks巧绘精美可爱水杯图标_fireworks教程
·如何修复windows vista系统用户损坏的配置文件_windows vista
·本地门户营运的3个重点注意事项_站长心得
·必知:在线推广网站的十四种方法_站长心得
·google analytics统计分析新版本说明_google推广
·google adsense 违规行为集_google推广
·googleadsense的无效点击_google推广
·关于网络原创作品的版权问题_网络编辑
·符合xhtml标准div+css布局的网站对网站seo的影响_seo网站优化
相关主题
西部数码虚拟主机

友情链接
CNNIC 西部数码
万网 自助建站
虚拟主机 asp空间
域名注册 域名
域名申请 主页空间
论坛空间 网站空间
国际域名 虚拟空间
空间租用 DDOS防火墙
成都主机托管 四川主机托管
主机租用 服务器租用
网站目录 自助建站
虚拟主机 网址大全
软件下载
自助链接
虚拟主机资讯 特价虚拟主机
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
发表评论 打印  刷新     关闭