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

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。