Microsoft技术社区联盟成员,全球领先的Excel2003/2007/2010门户,Office培训学习的最佳社区
设为首页收藏本站|繁體中文 切换到窄版

Excel Home论坛

 找回密码
 免费注册

用新浪微博连接

一步搞定

QQ登录

只需一步,快速开始

魔方网表,Excel终结者,永久免费 Excel服务器2010软件和教程下载 经典巨著,Excel 2010全能尽出
Excel不给力? 何不试试FoxTable! 2012年Excel免费培训班2-6月开课计划 新人必读:ExcelHome最佳学习方法 免费下载Excel行业应用视频教程
精粹:成为Excel高手的捷径 免费下载39集新Excel精粹视频教程 免费学习Excel数据透视表视频教程 入门必看《循序渐进学Excel》视频
Excel辅助工具的巅峰之作--Kutools 免费学习Excel 2007精粹视频教程 Office Tab,Office界面的革命性创新 搞不定老板要的报表?我们来帮您
  • 10022财富
  • 10鲜花
  • 9技术
    • 等级 3EH中级
    积分排行
    916
    帖子
    531
    精华
    1
    分享
    10
    1
    发表于 2009-1-16 09:56:40 |只看该作者 |倒序浏览 |(楼主)

    [分享] VBA入门指南——献给在这里得到帮助但看不懂代码的朋友(已建电梯)   [复制链接]

    为了方便大家查看本教程,特制作了索引:
    【2009.1.16】初识VBA  http://club.excelhome.net/viewth ... d=701638#pid2488755
    【2009.1.17】初识VBA(续) http://club.excelhome.net/viewth ... d=701638#pid2490947
    【2009.1.18】初识VBA(续)  http://club.excelhome.net/viewth ... d=701638#pid2492976
    【2009.1.19】代码起步——关键字  http://club.excelhome.net/viewth ... d=701638#pid2493610
    【2009.1.20】代码起步——关键字(续)  http://club.excelhome.net/viewth ... d=701638#pid2496077
    【2009.1.21】代码起步——关键字(续)  http://club.excelhome.net/viewth ... d=701638#pid2498626
    【2009.1.22】代码起步——关键字(续)  http://club.excelhome.net/viewth ... d=701638#pid2500468
    【2009.1.27】代码起步——关键字(续)  http://club.excelhome.net/viewth ... d=701638#pid2504890
    【2009.1.28】代码起步——关键字(续)  http://club.excelhome.net/viewth ... d=701638#pid2505205
    【2009.1.29】代码起步——关键字(续)  http://club.excelhome.net/viewth ... d=701638#pid2506201
    【2009.1.30】代码起步——我的程序  http://club.excelhome.net/viewth ... d=701638#pid2507007
    【2009.1.31】代码起步——我的程序(续)  http://club.excelhome.net/viewth ... d=701638#pid2507932
    【2009.2.1】代码起步——我的程序(续)  http://club.excelhome.net/viewth ... d=701638#pid2509234
    【2009.2.2】代码起步——我的程序(续) http://club.excelhome.net/viewthread.php?tid=390711&page=11&fromuid=701638#pid2511074
    【2009.2.3】代码起步——我的程序(续) http://club.excelhome.net/viewthread.php?tid=390711&page=11&fromuid=701638#pid2513181
    【2009.2.4】代码起步——我的程序(续) http://club.excelhome.net/viewthread.php?tid=390711&page=12&fromuid=701638#pid2515382
    【2009.2.6】代码起步——我的程序(续) http://club.excelhome.net/viewthread.php?tid=390711&page=14&fromuid=701638#pid2519770
    【2009.2.7】代码起步——我的程序(续) http://club.excelhome.net/viewthread.php?tid=390711&page=15&fromuid=701638#pid2521378
    【2009.2.9】代码起步——我的程序(续) http://club.excelhome.net/viewthread.php?tid=390711&page=17&fromuid=701638#pid2524925
    作为本帖的续集《从实例学VBA》已经开播,敬请关注:http://club.excelhome.net/viewthread.php?tid=400196

           来这里几天了,回复了一些帖子,但仔细想想,发现很多朋友虽然得到了版主、高手们的帮助,也拿到了可以实现其所要求的功能的范例XLS文件,但往往并不能理解其中的原理和代码,更不能举一反三化为自己的东西加以应用。为了能体现“授人以鱼不如授人以渔”的技术共享精神,特开此帖,希望本帖的一些介绍能带着您进入VBA的大门。当然由于水平有限,难免出现错误,希望各位版主、高手们加以批评指正——写在开贴之初!

            【2009.1.16】初识VBA
    今天,阳光明媚,清晨刚到办公室,泡好香茗一杯,便开始构思,该如何组织这篇帖子,看来我是作好了打持久战的准备,不管最终出来的是又臭又长的裹脚布还是无厘头的流水账,只要能对您带来一点帮助或者乐趣,我就很满意了。
             既然题目是初识VBA,那么我想先给大家一个直观的感受——什么是VBA?,往往在一些EXCEL的教材中,都会讲:VBA是一种自动化语言,它可以使常用的程序自动化,可以创建自定义的解决方案。就我看书学习的经验来说,我感到这样的定义式的描述带有很典型的中国式教材的风格,然而却不能让人立即理解,那么这样的定义有什么用呢?我给VBA下的定义是:VBA是一些代码的组合。可能这个定义没有上面教材的定义那么严谨和准确,但我想你一看就应该能明白,原来VBA就是写代码,或者说就是写程序。(如果掌握了VBA,居然我也能写程序了~~惊喜吧?)
            那么你用了这么久的EXCEL,可能从来没在EXCEL的XLS文件中看到过代码,难道就写在单元格里?那我就带你去找找,VBA的代码藏在哪里吧,这也正式我今天要谈的第二个问题。当你打开一个EXCEL文件,你只能看到由许多单元格组成的工作表,这时,你可以通过【视图】菜单的【工具栏】项目,打开一个工具栏,名字叫“控件工具箱”,从左往右属第三个按钮,名字叫“查看代码”,点一下,就可以打开VBA代码编辑窗口。更简单的方法是,通过【ALT】+【F11】的快捷键,打开VBA代码编辑窗口,看到了吧,原来代码就是藏在这里的哦~~~
             怎么写代码呢?你也太心急了点吧,你还没掌握命令、语法、关键字、对象、事件、属性等等内容,就想写代码?一口是吃不成个胖子的,还是让我来带你先认识下这里的每个角落吧,就像进了一间陌生的屋子,总归每个角落都得转到吧?最上面的几行,和EXCEL以及每一个微软平台下的应用程序都一样,总归是标题栏、菜单栏、工具栏等,接下来,看左边,有一个纵栏,写着“工程---VBAProject”,这里是工程资源管理窗口,里面通过树形列表展示了这个XLS文件(或者标准的应该叫“工作簿”)所包含的各个工作表对象以及工作簿对象本身。有什么用呢?你双击任何一个SHEET,比如SHEET1,试试?是不是在右侧打开了一个文档编辑窗口?那么你就能明白,如果是SHEET1的代码,就应该写在这里了,那么SHEET2的呢?当然就写在双击SHEET2后打开的窗口里咯~那么SHEET3呢?你烦不烦啊~~~人家都明白了!!!再看看右侧的文档窗口吧,顶上有两个下拉列表框,一个写着“通用”,一个写着“声明”,什么东东啊?左边的那个是对象列表框,可以让你选择在这个SHEET里面包含的所有对象,右边的那个是过程列表框,可以让你选择和左侧当前选中的对象关联的系统或自定义过程。那么什么是对象?什么又是过程呢?今天没时间了,什么?领导要我马上去开会?不会加工资了吧?哈哈,明天继续!

    [ 本帖最后由 yagi2008 于 2009-2-23 09:07 编辑 ]
     
    本帖评分记录财富 鲜花 技术 收起 理由
    ctp_119 + 5
    zzmxy + 5 相当棒!!
    yuanzhuping + 10 + 2 优秀作品
    总评分: 财富 + 10  鲜花 + 10  技术 + 2 
     
    分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 更多
    分享分享0 收藏收藏84 有用有用0 无用无用0 转发到微博
  • 63财富
  • 0鲜花
  • 0技术
    • 等级 2EH初级
    积分排行
    3000+
    帖子
    20
    精华
    0
    分享
    0
    2
    发表于 2009-1-16 10:09:40 |只看该作者
    这样的好贴,要支持哦!适合我等新手哦!!:loveliness:
    不过要是能用一些截图加上说明就更好了!:victory:
  • 604财富
  • 0鲜花
  • 0技术
    • 等级 3EH中级
    积分排行
    2796
    帖子
    172
    精华
    0
    分享
    0
    3
    发表于 2009-1-16 11:03:44 |只看该作者
    坐板凳学习
  • 604财富
  • 0鲜花
  • 0技术
    • 等级 3EH中级
    积分排行
    2796
    帖子
    172
    精华
    0
    分享
    0
    4
    发表于 2009-1-16 11:06:52 |只看该作者
    坐板凳学习
  • 852财富
  • 0鲜花
  • 0技术
    • 等级 3EH中级
    积分排行
    2731
    帖子
    273
    精华
    0
    分享
    0
    5
    发表于 2009-1-16 11:12:12 |只看该作者
    支持楼主,希望以后能多看到这样的帖子!
  • 85财富
  • 0鲜花
  • 0技术
    • 等级 2EH初级
    积分排行
    3000+
    帖子
    23
    精华
    0
    分享
    0
    6
    发表于 2009-1-16 11:41:47 |只看该作者
    我也来坐板凳啊!
  • 1901财富
  • 0鲜花
  • 0技术
    • 等级 4EH高级
    积分排行
    598
    帖子
    894
    精华
    0
    分享
    0
    7
    发表于 2009-1-16 16:21:34 |只看该作者
    支持楼主:handshake
  • 10022财富
  • 10鲜花
  • 9技术
    • 等级 3EH中级
    积分排行
    916
    帖子
    531
    精华
    1
    分享
    10
    8
    发表于 2009-1-17 11:25:04 |只看该作者 |(楼主)

    【2009.1.17】初识VBA(续)

      看到这么多朋友的支持和期待,倍感压力啊!怎么感觉写不好就对不起观众呢?哎,书到用时方恨少,大家将就着看吧……
           昨天我们在VBA代码编辑器里转了一圈,是不是有别有洞天的感觉啊?可是,这里对于大家都是陌生的环境,到底该怎么用这里的每一个工具呢?别心急,且听我慢慢道来。在讲代码之前,我首先必须介绍一下OOP的概念和基本知识。去去去,怎么你也学着那些教材里挑些专用名词来忽悠我们啊?呵呵,因为这样才能体现作者,也就是本人的水平啊!(别扔鸡蛋,说你呢!下次不说了,还不行吗?)所谓OOP就是指Object Oriented Programming,即面向对象的程序设计方法,这种程序设计思想主要是相对于以前的面向过程的程序设计方法而言的。下面我就给大家讲个故事,很久很久以前,写程序还是很专业很神秘的一种技术活,这个时候的程序员写出来的东西,是必须要按照他给你安排好的步骤来执行的,比方说,你运行一个程序,必须先输入一条打开数据表的命令,然后才能对这个数据表进行操作,否则就会报错,甚至对于有些设计不完善的程序就会崩溃。这样写出来的程序一个是缺乏灵活性,难道作为用户就不能自己决定先浏览还是先打印?另一方面,对于那时候写出来的程序,如果将来要修改或扩充功能,那将牵一发而动全身,也为在设计这些功能的时候是一步一步安排好的,如果要修改后面的步骤,必然会影响到前面的代码,这样导致了程序员非常累。(所以高薪啊~~其实也不过是重复劳动,呵呵)。后来,出来了一个聪明人,写出了一个叫“Smalltalk”的语言,这个语言本身并没有什么特别的地方,但其中其中表现出来的接近现实形态描述的对象思想却让整个软件设计理论提升了一个新的层次。说这些和我有什么关系啊?呵呵,下面的东西就和你有关了,也为现在的基于可视化架构的程序设计基本都引入了OOP的思想,所以如果你将OOP中最主要的概念搞清楚了,那么将对以后的学习奠定扎实的基础。
      面向对象的程序设计思想中主要包含四个概念。对象、事件、方法和属性。别看这些概念这么复杂,我给大家举个例子就明白了。对象是什么?就像现实中看得见摸得着的东西一样,是实实在在的东西。比如,一个苹果,就可以作为一个对象,围绕对象概念,延伸了一个“类”的概念,什么是类呢?苹果就是一个类。晕,刚才还说苹果是对象呢,怎么一会又成了类了?其实作为类而言的苹果的概念,就是指区别于梨和橘子的苹果类的概念,而不是具体指某一个苹果。红苹果、绿苹果都属于苹果这个类,哪怕烂苹果也是。(别扔啊!)我们在设计程序的时候,可以定义一个自己的类,这样以后要用到这类对象的时候,就可以通过这个类来派生出来,而不用每次都去写定义。还有个好处是,以后修改对象属性的时候,就可以通过修改类的属性来达到同时修改通过这个类派生的所有对象的属性的目的。对象的基本概念还有三个,属性、方法和事件。苹果的颜色可以看作苹果这个对象的一个属性,苹果的大小也可以看作他的一个属性,你自己还能说出什么属性吗?恩,重量、好坏、产地等等。慢点,价格是不是啊?这个问题留给大家思考吧。从上面的例子可以看出,属性是描述对象在某一方面的特征的,通过不同属性的值就可以区别开不同的对象。方法呢?对于苹果来说“吃”就是方法,啥?吃苹果也是方法?恩,别馋啊,对苹果而言,吃就是方法,因为这个是可以作用于这个对象的,还能举个例子吗?比方相对于表格对象的方法就可以是打开、关闭、修改等。方法是用来作用于对象,使其产生某种变化的。事件是什么呢?事件就是被设计用来触发某些代码来自动执行的,这个就叫做事件驱动机制。还记得刚才我们谈到的面向过程的程序设计方法的缺点吗?对,代码的执行顺序是由设计者在设计时指定的。这种吃力不讨好的事情,劝大家以后还是少做做。我们有了事件驱动机制以后,这样的情况就可以避免了。现在,可以通过将代码写在可能发生的事件中的办法,由用户决定啥时候运行这些代码,只要程序运行时,用户的操作行为触发了相应的事件,那么该事件中定义的代码,就会被自动执行了。
      好了,该吃午饭了,有朋友回复说最好图文并茂,现在讲的是理论,在以后讲到代码时候,会加上插图和动画的。明天见!

    [ 本帖最后由 yagi2008 于 2009-1-17 11:44 编辑 ]
  • 2607财富
  • 0鲜花
  • 0技术
    • 等级 4EH高级
    积分排行
    474
    帖子
    666
    精华
    1
    分享
    0
    9
    发表于 2009-1-17 13:02:08 |只看该作者
    好贴子,期待明天再出
  • 2546财富
  • 0鲜花
  • 0技术
    • 等级 4EH高级
    积分排行
    751
    帖子
    832
    精华
    0
    分享
    0
    10
    发表于 2009-1-17 20:17:28 |只看该作者
    一直期待着这样的入门帖,现在终于盼来了,继续关注中。
    虽然我已经自己看啦很多资料,但还是感觉对vba不入门,多多学习。
    我现在最大的困惑是何时用sub,何时用private sub,sub和private sub又应该在什么时候、什么地方用,唉,太困惑了,还有很多词也搞不懂,比如temp等等。好好学习了。

    发表回复

    您需要登录后才可以回帖 登录 | 免费注册

    发帖时请遵守我国法律,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任。
    回顶部