VBA语言学习.docx

上传人:b****6 文档编号:2981372 上传时间:2022-11-16 格式:DOCX 页数:35 大小:1.27MB
下载 相关 举报
VBA语言学习.docx_第1页
第1页 / 共35页
VBA语言学习.docx_第2页
第2页 / 共35页
VBA语言学习.docx_第3页
第3页 / 共35页
VBA语言学习.docx_第4页
第4页 / 共35页
VBA语言学习.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

VBA语言学习.docx

《VBA语言学习.docx》由会员分享,可在线阅读,更多相关《VBA语言学习.docx(35页珍藏版)》请在冰豆网上搜索。

VBA语言学习.docx

VBA语言学习

网友学VBA

(1)- 写在前面的话

各位爱好钻研Office技术的网友,你们好!

从今天开始,我将在我的博客中增加一个新的文章类别,即“和网友一起学VBA(Visual Basic forApplication)”,简称“网友学VBA”。

我将把它作为一个专门系列,与我博客中的文学系列和税务系列并存,长期地写下去,同网友们一起交流学习心得,分享学习经验,共同提高VBA编程水平。

 

    在实践中,VBA在Excel当中应用得最为广泛,也最有价值,能够高效、灵活地扩展Excel的功能,为处理大批量的、复杂的数据带来方便。

因此,我们的讨论将以ExcelVBA为主要内容,兼顾其他Office组件。

 

    我个人认为,修炼Excel高手有三个层次。

第一层是能够熟练地制作电子表格,并运用一些常用的、简单的公式进行计算;第二层是能够成功地运用一些高级函数以及Excel自身的高级功能分析数据,进行一些较为复杂的数据处理工作;第三层就是利用VBA技术扩展Excel的功能,对Excel进行二次开发,让它按照我们的意愿去处理相应的工作。

通过学习和使用VBA技术,我们会看到Excel的另一片天地,这也是我们之所以要努力修炼到第三层的目的:

我们要随心所欲地让Excel老老实实地为我们工作。

 

    需要说明的是,我不是在写教科书,所以今后我们交流的内容,将不会以各种概念为主,而会以实例和操作为主,而且介绍的实例也以能解决我们的实际问题为主。

在学习过程中,我将参考一些专业书籍,选用一些网络上流行的代码,在此就不一一注明原出处。

对其中可能引用的部分经典代码,在此先向原编写者致谢。

 

    好了,从现在开始,让我们携手共同走进OfficeVBA的神奇世界。

网友学VBA

(2)- 什么是VBA

我第一次亲密接触VBA时,还在做一种叫“税收会计”的工作。

在使用Excel办公时,我对一次又一次的重复任务感到厌倦,就想找到一种能够自动重复任务的办法。

很快,我在Excel中发现了“宏”,发现它就是我要的东西,大喜!

之后,我又发现了“VBA”,狂喜!

   说心里话,我其实不喜欢VBA,所有与编程有关的东西我都不喜欢。

但我喜欢VBA能帮我实现高效办公,并且是在我没有编程基础的情况下。

专家说:

不用编写一行代码,就可以使用VBA。

这太好了!

   在学习和使用VBA之前,对有些概念的理解,我们是无法避免的,否则,就不会知道自己要做什么、如何做。

咱们得明明白白地做事,你可不能嫌我烦。

   VBA的全称是VisualBasicforApplication,它是微软开发出来的、在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。

我们可以用它来创建自定义的解决方案。

所谓应用程序自动化,是指通过编写程序让常规应用程序(如Excel、Word、Access等)自动完成工作。

   VBA本来是Office中包含的一种用来扩展Office功能的Basic语言,最早出现在Office97中,而且Excel是最早支持VBA的组件。

   VBA可以在Office各组件中通用。

当你学会了在Excel中使用VBA,就已经具备了在其他Office组件中使用VBA的基本知识。

另外,AutoCAD,CorelDRAW等应用程序的新版本中也集成了VBA。

   也许有的朋友会问,Excel不是本来就有自动功能吗?

如自动求和、自动套用格式、排序、筛选、数据透视等等。

但你说的都是一些单步性的工作,是狭义的自动化。

而使用VBA,我们可以只发出一个指令(如单击一个按钮),就可以让Excel乖乖地替我们完成剩下的工作:

将一个文件中的数据逐条录入到一个工作表中→排序→删除重复的数据→进行求和计算→画上表格边框→进行页面设置→打印输出……一系列的工作,很可能就在一瞬间完成!

酷吧!

难怪有人说,VBA是Excel的“遥控器”。

酷是酷,但有两点我得忠告大家:

第一点,虽然VBA上手很容易,但也不至于容易到像我们给mm写情书一样随手就来,想成为高手,还须多年磨练啊!

(呵呵,写一封让mm动心的情书亦非易事啊!

)第二点,我们也不要到处去用VBA,因为一些简单的工作或一次性的工作,还不如手工去完成它,否则,你的代码还没有写完,人家的工作早已完成了,并翘着腿坐在你旁边喝着咖啡鄙视着你呢。

所以,VBA还是应用在那些比较复杂、重复性的、劳动量大的工作上,所谓“好钢用在刀刃上”嘛。

网友学VBA(3)- 在Excel中实现金额数字中文大写

在继续深入学习VBA理论之前,我们先来看一个VBA实例。

   我们要解决的问题是:

在Excel中实现人民币金额中文大写这一功能,即在一个单元格中输入小写金额数字,而在另一个单元格自动显示中文大写金额。

   那么Excel有没有提供这种功能呢?

先看看再说吧。

   打开Excel工作簿,在工作表的A1单元格输入数字100815.96,在工作表的B1单元格中输入公式“=A1”,右击B1单元格,在弹出菜单中点“设置单元格格式”,在出现的对话窗口中点选“数字”标签,在分类列表中选择“特殊/中文大写数字”,这时单元格B1中显示的结果为“壹拾万零捌佰壹拾伍.玖陆”。

(图1)看来,Excel中是有中文大写功能的,只是没有显示“元、角、分、整”的功能,不能解决中文金额大写的问题。

微软也真是的,做事留一手,这不是明摆着欺负咱们中国人吗?

 

(图1)

   那么,我们只能自己解决问题了。

   有两种方法可行:

一是使用IF函数。

这种方法需要使用IF函数多层嵌套才能实现,但是自己看着都晕,容易出错,使用和维护不便,所以我就不作推荐了。

另一种方法就是自定义函数,这是我要向大家着重介绍的。

   先给这个自定义函数取个名儿,它的中文名叫“大写金额”,英文名叫“dxje()”。

呵呵,跟小沈阳学的。

   编写函数的代码如下:

 

Functiondxje(q)

     ybb=Round(q*100)'将输入的数值扩大100倍,进行四舍五入

     Y=Int(ybb/100)'截取出整数部分

     j=Int(ybb/10)-Y*10'截取出十分位

     f=ybb-Y*100-j*10'截取出百分位

     zy=Application.WorksheetFunction.Text(Y,"[DBNum2][$-804]General")'将整数部分转为中文大写

     zj=Application.WorksheetFunction.Text(j,"[DBNum2][$-804]General")'将十分位转为中文大写

     zf=Application.WorksheetFunction.Text(f,"[DBNum2][$-804]General")'将百分位转为中文大写

     dxje=zy&"元"&"整"

     d1=zy&"元"

     Iff<>0Andj<>0Then

       dxje=d1&zj&"角"&zf&"分"

       IfY=0Then

         dxje=zj&"角"&zf&"分"

       EndIf

     EndIf

     Iff=0Andj<>0Then

       dxje=d1&zj&"角"&"整"

       IfY=0Then

         dxje=zj&"角"&"整"

       EndIf

     EndIf

     Iff<>0Andj=0Then

       dxje=d1&zj&zf&"分"

       IfY=0Then

         dxje=zf&"分"

       EndIf

     EndIf

     Ifq=""Then

       dxje=0'如没有输入任何数值为0

     EndIf

   EndFunction

   什么?

你看不懂!

不要紧,以后会懂的,现在只要跟着做就行了。

   第一步,复制上面的代码。

(意外情况告知:

有时候在网页上复制的代码可能含有一些网页特有格式,所以最好先将代码复制到记事本中过滤一下,去掉网页格式,再从记事本中复制干净的代码进行粘贴操作。

这我以后就不一一说了。

当然,这里应当不存在这个问题。

   第二步,打开创建宏的对话窗口。

Excel2007中是在“开发工具/宏”菜单下,Excel2003是在“工具/宏/宏”菜单下。

在“宏名”中输入“dxje”。

(图2)

(图2)

   第三步,在“宏”对话窗口中,单击“创建”按钮,会打开VisualBasic编辑器(VBE),先将代码窗口中系统自动生成的两行代码清除,再将我们先前复制好的自定义函数代码粘贴上去(图3),然后点VBE菜单“文件/关闭并返回到MicrosoftExcel”,返回到刚才的工作表中来。

(图3)

   当然,Excel2003中我们也可以通过“工具/宏/VisualBasic编辑器/插入/模块”,打开上面的代码窗口。

Excel2007我就不赘述了。

 

   第四步,在单元格B1中输入“=dxje(A1)”,即能正确显示中文大写金额数字,大功告成!

(图4)

   小提示:

   

(1)在“宏安全性”中要设置为“启用所有宏”(或将宏安全级设为低),否则代码不能运行。

Excel2007中从菜单“开发工具/宏安全性”进入设置,Excel2003中从从菜单“工具/宏/安全性”进入设置。

   

(2)如果你使用的是Excel2007,而不是Excel2003,那么在保存文件时要选择“启用宏的工作薄”。

我觉得,由于目前Excel2003在实践中仍占主导地位,所以建议您保存为“Excel97-2003工作薄”类型,即文件扩展名只有3位的“.xls”的Excel文件,以免引起兼容方面的麻烦。

   (3)如果你想在大写金额前面加上“人民币”三个字,可以这样输入公式:

="人民币"&dxje(A1)。

注意引号必须在英文状态下输入。

网友学VBA(4)- VBA、VB、VBS的关系

在前面介绍的“中文金额大写”的实例中,自定义函数dxje()的代码就是用VBA语言编写的。

当然啰,你要说是用VB语言编写的,我也不反对,因为VB和VBA的编程语句并没有多大区别,它们的关系十分密切。

你学会了VB,很可能就学会了VBA。

   比较的正统的说法是,VBA是VB(VisualBasic)的一个子集,VBA不同于VB,原因是VBA要求有一个宿主应用程序(如:

Word、Excel等)才能运行,而且不能用于创建独立的应用程序;而VB可用于创建独立的应用程序。

不过,只要你愿意,你还是可以把应用程序作为一个平台,然后使用VBA技术创建一个自己的、独特的应用程序。

比方说,你完全可以用Excel+VBA开发一套小型财务处理系统。

   有人将VBA、VB的区别总结为4点:

   1.VB是设计用于创建标准的应用程序,而VBA是使已有的应用程序(Excel等)自动化。

  2.VB具有自己的开发环境,而VBA必须寄生于已有的应用程序。

  3.要运行VB开发的应用程序,用户不必安装VB。

因为VB开发出的应用程序是可执行文件(*.EXE),而VBA开发的程序必须依赖于它的“父”应用程序,例如Excel。

   4.VBA实际上是脚本语言,可以解释执行;VB则需编译才能

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

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1