我学习的教程几乎都是讲解语法在前,罗列对象在后,给一堆例子在最后。我在学习的过程中,这些很重要,但不是最重要的,我觉得最重要的事是要教会我怎么解决实际的问题。所以我总结的时候,单独拿出开发模式这一块,我决定要重点强调实际应用的作用。纵观我所学的C/C++/C#,VB语言,我觉得学会简单的语法并不难,难的是应用所学去解决实际的问题。我解决问题的一般步骤是:分析问题规模,采用合适的算法,引用恰当的类库,然后是使用语法去表述并解决问题。 VBA的开发模式其实也是解决问题的一般步骤。典型的VBA开发步骤是这样的,先录制符合条件的宏,然后修改宏,去掉冗余的步骤,调整代码,最后是部署宏。实际上这个开发的过程在VBA中是通吃一切的"万金油",学习走的是这个过程,开发走的还是这个过程。哪怕是啥都不懂的人,只想重复完成一些单调的任务,也是轻车熟路的完成这个自动化的过程。 以下的操作过程是在Excel2010中完成的,其它的版本基本都差不多。 1. 录制宏 录制宏很简单,操作步骤如下:
说明:宏的保存位置有3种:如果保存宏到当前文档中,那么这个宏只能在当前文档中使用;如果保存到新文档中,这个意思很直接;最后一个是保存到个人宏工作簿中,这个说明这个宏可以被所有的文档使用。个人宏工作簿是一个隐藏的工作簿,如果本机没有的话,Excel会自动创建的。打开Excel文档后,Excel也会打开这个个人宏工作簿,你可以选择显示/隐藏这个工作簿。 2. 修改宏 打开宏列表(快捷键"Alt+F8"),可以看到所有打开Excel文档中的宏。如下图: 选择宏,然后点击"Edit"就可以打开VB编辑器,编辑宏。在这个窗口中也可以删除录制的宏。 3. 运行/部署宏 录好宏以后,我们可以通过以下几种方式运行这个宏:
其实,宏的保存位置和运行方式就决定了宏的部署情况,这个针对不同的用户,这个选择是不一样的。 下面我也简单总结一下VBA主要的开发工具与常用的类型。 a. VB编辑器 在宏列表窗口中,点击"Edit..."就可以进入宏的编辑器:VB Editor;也可以直接按快捷键Alt+F11打开VB编辑器。如下图所示: 这个编辑器与大多数的IDE基本都是一样的,都包含菜单,代码编辑区,工程文档视图,属性窗口等等,这里就不详述了,试试就知道了。 b. Form控件与ActiveX控件 这两个是有区别的,Form控件可以直接拖到Sheet中使用,而ActiveX控件是不可以直接在Sheet中使用的,它是放到User Form中使用的。Form控件的使用也比较简单,通常就是分配宏,或者点击右键菜单(基本上要拖动,或者设置Form控件的属性,都是要在空间上单击右键,让控件进入开发状态;设置好以后鼠标打击其它的单元格,就可以让Form控件进入使用状态)中的“Format Control...”做一些简单的设置。而ActiveX控件是开发中用的比较多的,配合User Form,可以提供相当专业的窗体应用程序体验。 c. User Form 为什么要使用User Form呢?对于很多的用户而言,直接在Excel中录入程序用到得数据,或者直接通过简单的InputBox,或者MsgBox是不够的,有时候以窗口的形式呈现这些项会更方便。使用User Form也比较简单,基本与别的IDE是一样的,拖放控件上去,设置相关属性,编写相关的事件,就OK了。 这里有个小技巧:在往User Form上画控件的时候,如果双击某个Toolbox上的控件,那么这个控件就会一直被选中,如果是重复画同一个类型的控件,这样比较方便。画完后,单击Toolbox上的控件,就会取消选中。 对于User Form:
对于ActiveX控件:
d. Module 与 Class Module 简答的说,Module就是放代码的地方,并没有什么特殊的意义,放在其中的成员和方法,Private的只有本Module中的方法可访问,Public的则程序中所有的Module都可以访问,而且访问的都是同一个值,修改以后,其他人得到的就是修改后的值。 而Class Module就是面向对象中对象的概念了,它封装了成员和方法,可以New不同的实例(实例声明的类型是Object),实例有各自单独的成员区间,每个实例之间互不干扰。调用类的属性和方法的时候,都要通过实例去调用。 所以简单的操作直接用Module就可以了,而复杂,重用度高的就可以封装成对象,以便多次重复使用。 e. 调试与运行程序
谨记:对象不决问Google,无从下手录制宏。 谨记:不要尝试用VBA去解决所有问题,VBA有自己擅长的领域,也有它不擅长的场合。 |
|