网友学VBA1写在前面的话
各位爱好钻研Office技术的网友,你们好!从今天开始,我将在我的博客中增加一个新的文章类别,即饮水机清洗设备和网友一起学VBAVisual Basic for Application,简称网友学VBA。我将把它作为一个专门系列,与我博客中的文学系列和税务系列并存,长期地写下去,同网友们一起交流学习心得,分享学习经验,共同提高VBA编程水平。 
    在实践中,VBAExcel当中应用得最为广泛,也最有价值,能够高效、灵活地扩展Excel的功能,为处理大批量的、复杂的数据带来方便。因此,我们的讨论将以Excel VBA为主要内容,兼顾其他Office组件。 
    我个人认为,修炼Excel高手有三个层次。第一层是能够熟练地制作电子表格,并运用一些常用的、简单的公式进行计算;第二层是能够成功地运用一些高级函数以及Excel自身的高级功能分析数据,进行一些较为复杂的数据处理工作;第三层就是利用VBA技术扩展Excel的功能,对Excel四大银行是哪四大进行二次开发,让它按照我们的意愿去处理相应的工作。通过学习和使用VBA技术,我们会看到Excel的另一片天地,这也是我们之所以要努力修炼到第三层的目的:我们要随心所欲地让Excel老老实实地为我们工作。 
    需要说明的是,我不是在写教科书,所以今后我们交流的内容,将不会以各种概念为主,而会以实例和操作为主,而且介绍的实例也以能解决我们的实际问题为主。在学习过程中,我将参考一些专业书籍,选用一些网络上流行的代码,在此就不一一注明原出处。对其中可能引用的部分经典代码,在此先向原编写者致谢。 
    好了,从现在开始,让我们携手共同走进Office VBA的神奇世界。
网友学VBA2什么是VBA
我第一次亲密接触VBA时,还在做一种叫税收会计的工作。在使用Excel办公时,我对一次又一次的重复任务感到厌倦,就想到一种能够自动重复任务的办法。很快,我在Excel中发现了,发现它就是我要的东西,大喜!之后,我又发现了“VBA”,狂喜!
    说心里话,我其实不喜欢VBA,所有与编程有关的东西我都不喜欢。但我喜欢VBA能帮我实现高效办公,并且是在我没有编程基础的情况下。专家说:不用编写一行代码,就可以使用VBA。这太好了!
    在学习和使用VBA之前,对有些概念的理解,我们是无法避免的,否则,就不会知道自
己要做什么、如何做。咱们得明明白白地做事,你可不能嫌我烦。
    VBA的全称是Visual Basic for Application,它是微软开发出来的、在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。我们可以用它来创建自定义的解决方案。所谓应用程序自动化,是指通过编写程序让常规应用程序(如ExcelWordAccess等)自动完成工作。
页眉横线
    VBA本来是Office中包含的一种用来扩展Office功能的Basic语言,最早出现在Office97中,而且Excel是最早支持VBA的组件。
    VBA可以在Office各组件中通用。当你学会了在Excel中使用VBA,就已经具备了在其他Office组件中使用VBA的基本知识。另外,AutoCAD,CorelDRAW等应用程序的新版本中也集成了VBA
    也许有的朋友会问,Excel不是本来就有自动功能吗?如自动求和、自动套用格式、排序、筛选、数据透视等等。但你说的都是一些单步性的工作,是狭义的自动化。而使用VBA,我们可以只发出一个指令(如单击一个按钮),就可以让Excel乖乖地替我们完成剩
下的工作:将一个文件中的数据逐条录入到一个工作表中排序删除重复的数据进行求和计算画上表格边框进行页面设置打印输出……一系列的工作,很可能就在一瞬间完成!酷吧!难怪有人说,VBAExcel遥控器
酷是酷,但有两点我得忠告大家:第一点,虽然VBA上手很容易,但也不至于容易到像我们给mm写情书一样随手就来,想成为高手,还须多年磨练啊!(呵呵,写一封让mm动心的情书亦非易事啊!)第二点,我们也不要到处去用VBA,因为一些简单的工作或一次性的工作,还不如手工去完成它,否则,你的代码还没有写完,人家的工作早已完成了,并翘着腿坐在你旁边喝着咖啡鄙视着你呢。所以,VBA还是应用在那些比较复杂、重复性的、劳动量大的工作上,所谓好钢用在刀刃上嘛。
网友学VBA3Excel中实现金额数字中文大写
在继续深入学习VBA理论之前,我们先来看一个VBA实例。
    我们要解决的问题是:在Excel乘风破浪的分数中实现人民币金额中文大写这一功能,即在一个单元格中输入小写金额数字,而在另一个单元格自动显示中文大写金额。
    那么Excel有没有提供这种功能呢?先看看再说吧。
    打开Excel工作簿,在工作表的A1单元格输入数字100815.96,在工作表的B1单元格中输入公式“=A1”,右击B1世界建筑单元格,在弹出菜单中点设置单元格格式,在出现的对话窗口中点选数字标签,在分类列表中选择特殊/中文大写数字,这时单元格B1中显示的结果为壹拾万零捌佰壹拾伍.玖陆。(图1)看来,Excel中是有中文大写功能的,只是没有显示元、角、分、整的功能,不能解决中文金额大写的问题。微软也真是的,做事留一手,这不是明摆着欺负咱们中国人吗?
 
(万里长城的历史资料1)
    那么,我们只能自己解决问题了。
    有两种方法可行:一是使用IF函数。这种方法需要使用IF函数多层嵌套才能实现,但是自己看着都晕,容易出错,使用和维护不便,所以我就不作推荐了。另一种方法就是自定义函数,这是我要向大家着重介绍的。
    先给这个自定义函数取个名儿,它的中文名叫大写金额,英文名叫“dxje()”。呵呵,跟小沈阳学的。
    编写函数的代码如下: 
Function dxje(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") '将整数部分转为中文大写