Excel VBA教程之一:写在前面VBA功能如何强大,这已勿庸费言,但如何才能很快进阶,写出自己满意的程序,却取决于个人努力和悟性。
我下了很大功夫却收效甚微,有时,高手一句点拨却胜读三天书。
所以,我把个人学习所得作一点整理,希望有助于后学。
只所以会有看书没用之感,一来是因为市面(我国)上大多数计算机类图书多为粗制滥造之作(这话稍有唐突),二来因为计算机这东西太呆板,不见得新出现的问题就能立即得到某本书籍上的解释,新问题总是层出不穷的。
想把一门编程语言全部搞懂,再去写点程序,是一个十分愚蠢的想法。
你想盖房子,难道你想先学会制造砖头、玻璃等?我承认,把语言弄懂再做事情会很顺手,但是,你知道吗,有多少人在弄懂一门晦涩难懂的语言之前就放弃了呢?比如,什么叫面向对象编程?OOP和以前的流线性编程有什么异同?我还是大力提倡学以致用,别指望什么事你都能成专家,计算机世界的“罗氏定理”就是:“毕其一生,不能穷其万一”,你记住了吗?那么,对于没有编程基础的人,怎样才能进步得快呢?我有几点思考:1.你一定要带着明确的目的去做一件具体的事。
这样,才会在做的过程中发现问题,并逐步去解决这些问题。
比如,我想做一个《学生成绩分析系统》,我就会想到怎么才能把学生分数分成不同的班、怎么才能算出总分、平均分、标准差等、怎样比较各班的情况,怎样用图形显示更直观,怎么样才能把某个学生的历次成绩放在一起比较等。
2.你动手去做一做,一点一点地完成你上面的设想,不必因为这个大工程没做出来而忽略你在局部的突破,这样,你会越来越有信心,这就够了,还有什么比有信心做事的感觉更好的了吗?3.合理及时利用网络资源,这绝对是个好东西,或许你看起来很了不起的问题,在别人看来简直不算什么,一定会有人为你解答。
上网并不只是QQ和game啊!同时要好好利用软件的帮助系统,这才是最权威的解释,很多计算机书籍抄自帮助,你想,微软的专家写的,绝对原创,他还能去抄谁?4.做了一些工作之后,再回过头来看书,就会感觉很亲切,觉得写书的人原来也不是一无是处,也是很辛苦的(不要过分自我批评了)。
不过,要看书,计算机类的,我百分之一万地推荐你看外国人写的,首先,软件是人家编的,当然更了解。
其次,外国人写的,又被介绍到中国来,也是比较优秀的了。
三来,我确实作过对比,看老外的书收益最大。
语言不通的问题怎么办?金山词霸一下呗。
我为什么要写这个东西?一是因为我想帮助别人,二是因为我想因此促进自己,三是因为我反感某些号称程序员的家伙,似乎编程是一件多么了不起的事,用一些极端人士的话来说:“编程有什么了不起?不就是判断和循环吗”,说得很有道理,从本质上说,计算机就是在做判断和循环,不信你就跟着我来吧。
好了,Let’s goExcel VBA教程之二:从一个界面设计开始一个好的软件,除了运算速度快、体积小后,更重要的是,它的用户界面是不是很友好、亲切,“友好、亲切”这样的词汇在开始接触计算机语言时,感觉很好笑,但现在不一样了,我感觉这两个词最贴切!界面友好,就是引导用户能很快找到他需要的服务,最能想到他的心思,最体贴他,让他不时地心动,不时地赞叹!界面友好,就是能让用户在不经意间学到好多知识,无形中丰富了他自己,让他有美的享受!界面友好,还在于一目了然的界面却能让他需要的功能呼之即来,挥之即去!如此等等。
那么,我想做一个《学生成绩分析系统》,我该怎么做呢?以下的界面你满意吗?这个界面上有你做成绩分析的各项功能,从考试的组织生成考号、到学科组录入各科成绩、到录错后的修改、到统计分析生成各班情况、各学科组情况、人头数、分数线的预测、到打印、存档、调用。
最为特色的功能是深度跟踪,它可以自动把一个学生的历次成绩都调出来,进行历史分析,看一看一位学生的成绩为什么会好或坏,这个功能能不让人心动吗?如果你不知道各个按钮的作用,旁边就是帮助系统,告诉你它们的功能是什么,你应当怎么去做。
你还有什么问题呢?如果有,我已经提供了E-mail地址,告诉我啊,可以为你量身定做!要说多余,就是版权信息了,呵呵,我也是劳动,你就尊重一下没什么大不了的啊!以上这个界面,可以说十分友好了。
那么,我到哪里去做这个东西呢?要编程吗?不用编程,打开Excel,按下Alt+F11,就可以了,我还可以右击工作表,选查看代码,还有其它方法,我的意见是一种就够了。
我们的目的是去公园玩,而不是总结有几条路可以到那里,别开小差,快回来!打开Excel,按下Alt+F11,你看到了下图:再点击“插入”菜单,选“用户窗体”,然后得到下图中间有个工具箱,上面有按钮啊、文本框啊、标签啊等等,你只要把它们拖到到右边那个带有“麻麻点”的窗体中,并调整一下它们的大小和位置,就会做得比我还好了了。
精确调整它们,要用到左下角的属性窗口。
怎么拖知道吗?不是用绳子捆住,不是用牛拉,而是用鼠标!建立了界面之后,你除了长舒一口气外,是不是体会到一点喜悦呢?生活就是这样,找个空偷着笑,不过,还是要干点实事的哟!我猜到了,现在你比我还急了,你更想赋于每个按钮一定的功能,希望点它一下,它就能做点事情,你的想法太对了,每一个按钮,当我们给它各写一段程序,让它能实现一定的功能时,我们就把叫做面向这个对象编程,对象,在这里,就是按钮。
希望那些比较“zhuai”的程序员别面带轻蔑,你倒给我说说,如何才能让不懂程序的同志很快理解“面向对象编程”这个意思?我们下一期见!Excel VBA教程之四:你要删除谁前面的学习,让我们初步体验到使用代码比较方便,代码本身也比较简单,这是VBA的优势,我们发现,编程其实并不难,不过,这只是初步,想实现比较复杂的功能,路还长着呢,好在,只要有信心,有兴趣,总是可以成功的。
那么,如果我想插入的不是一张表,而是20张表,需要运行20次上节课所提到的代码吗?其实不需要,我们只要再插入几行代码就可以了。
回顾一下:Sub 建立工作表()Sheets.AddEnd Sub可以利用工作表的Add属性增加工作表,如果想添加更多,只要设置一个循环就可以了。
还记得教程一中的那种话吗?“编程有什么了不起?不就是判断和循环吗”,我们来验证一下。
Sub 建立工作表()Dim i As IntegerFor i = 1 To 5Sheets.AddNext iEnd Sub这段代码一运行,一下子就可以插入5张表,如果你把5改成50,则一下子可以产生50张表,如果是手工插入,你要花多长时间啊!其中的for…next…就是表达循环关系的一种方式,还有其它种类,暂且不表。
值得提醒的是,循环变化i在使用前,你一定要先和dim声明一下。
你发现,所生成的工作表的名称,是自动加上去的,要是在生成的时候,就给个名字,是不是会更好呢?试试下面的代码吧。
Sub creatsheet1()Dim i As IntegerFor i = 1 To 10Sheets.Add = iNext iEnd Sub一下子生成了10张表,表名从1到10,难道用它来表示一班到十班,不是非常好吗?我想到了我们的《成绩分析系统》。
如果名字不是一个系列的数字,你可以使用数组来表达,比如知个学科表。
Sub creatsheet()Dim i As IntegerDim sheetNamesheetName = Array("语", "数", "英", "物", "化")For i = 0 To 4Sheets.Add After:=Sheets(Sheets.Count) = sheetName(i)Next iEnd Sub到目前,你的工作簿中已经有很多工作表了,如果你实验的次数足够多,你还会收到一些错误的警告,那是因为你插入的工作表重名了。
如果你要删掉一张工作表,那有点麻烦,因为你必须具体而明确地指明是哪一张工作表,否则,程序不知你对谁的工作不满意了,要删除谁,你得先指明。
这完全不象某些的领导,要表扬,就会表扬一大堆,尽管有时是某名其妙的张冠李戴,而批评,也是一本糊涂账。
怎么删呢?看下例:Sub deleteSheets()Sheets(“sheet1”).DeleteEnd Sub如果你想删掉一些工作表,你想手动还是用代码自动化呢?当然是后者,看看下例。
Sub deletesheet3()Dim i As IntegerFor i = 1 To 5Sheets(CStr(i)).DeleteNext iEnd Sub千万注意不要写成Sheets(i),一定要加上CStr(),我就是吃了这个亏,浪费几个小时,气晕了头才发现的,计算机是多么机械的一个东西,不能越雷池一步,有点象某些死板的领导。
要是删那种不是数据系列的工作表,就得用下面的代码了。
Sub deleteSheets()Dim classNameclassName = Array("语", "数", "英", "物", "化")For i = 0 To 4Sheets(className(i)).DeleteNext iEnd Sub你插入的那些有名字的工作表,将逐一被删除!每删一张,都会给一句警告,能否让它不出现呢?再加两句代码,就可以了。
Sub Deletesheet()Dim classNameclassName = Array("语", "数", "英", "物", "化")Application.DisplayAlerts = FalseFor i = 0 To 4Sheets(className(i)).DeleteNext iApplication.DisplayAlerts = TrueEnd Sub以上代码将用到《成绩分绩系统》统计分析按钮和退出系统按钮中,点一下统计分析,就会产生各班级和各学科分数表,只是暂时还没有数据,会有的,你得有点儿耐心。
再点一下退出按钮,将把这些表给删了,会让我们的软件体积更小。
好啦,到这里,你已经可以添加你想要的任意数量的工作表,也可以把它删了,都只是弹指之间的事情,以后,你要是有什么不顺心的事,可以到这里反复添加和删除,相当于到健身房去打拳。
好象,人们越来越脆弱了,据说这样可以发泄自己,让自己很快平静下来。
常听到两句时髦的话:“要调整好心态”、“你不能改变世界,那你可以改变自己的心情”,我感觉人类真是越来越渺小,越来越脆弱了,这种对命运的逃避、妥协、呻吟和哀叹,真让人看不起,更有许多人,心态其实很差,往往张口避口对别人谈心态,仿佛自己人心态很好似的,不过是个掩耳盗铃的小丑!或许是虚张声势地掩盖自己的自卑而已。