在Excel VBA对象模型里,我们说到了Excel VBA的专有对象,在前面几乎都是使用Excel VBA的专有对象,主要是因为我们操作处理的是Excel,其实VBA语言还有一些通用的对象(通用指的是比如在word里也有,在其他一些用VBA语言的应用程序都有的对象),这些对象在Excel VBA里用的还是比较多的,比如字符串对象那些功能,在用VBA实现Excel函数03:SUMIF已经使用过了。
1、查看对象:
前面的Range对象提到过,在编辑器里按F2会出来一个界面:对象浏览器,在这里可以看到可以使用的一些对象:
最后那个其实就是你打开的Excel的工程名称,可以看到除了Excel之外,还有Office、stdole、VBA,这几个其实对应的就是我们在VBE编辑器里,点击工具-引用出来的那个界面里勾选了的项目:
注:图中16.0这种是版本号,和安装的Office版本相关,所以你电脑里出来的不一定是一样的。
比较常用的是VBA库里的东西,其他的几乎很少使用。
但是你只要理解了对象的原理,需要使用的时候再去查看,还是比较简单的。
比如我们试下Office下面的COMAddIn:
输出的就是我们在Excel界面,点击开发工具-COM加载项里的东西。
这里你可以尝试一下,工具-引用出来的那个界面,前面2项是无法取消的,我的理解是那2个是Excel VBA的基础,取消了的话,Excel界面那些操作都将无法使用。比如上面我们测试的Office下面的COMAddIn,你把工具-引用出来的那个界面的第4项取消掉,再运行就出错了:
2、VBA库
点击对象浏览器,选择VBA,这里面的是我们比较常用的一些。
点击下面的Strings,可以看到前面用过的Left、Len等,里面还有很多其他的对字符串处理的常用功能,所以,如果你想对字符串进行一个处理,又不知道有没有这个功能,你可以在写代码的时候输入Strings.,然后编辑器自动会列出在对象浏览器里出现的这些:
点击下面的Information,可以看到前面几篇文章里使用过的IsArray、IsMissing、IsNumeric等。
点击下面的FileSystem,可以看到对象Workbook Worksheet Range的使用使用过的MkDir,里面的就是一些常用的对文件的操作,像我们平时用鼠标操作的复制、粘贴、删除文件等。
这些库里的东西,你会发现它们和Excel VBA的专有对象都是没有直接联系的。
3、小结
今天说的这些和写程序看起来可能没什么大的联系,但这些原理性的东西我认为是比较重要的,对理解VBA对象模型很有帮助。
比如它这里为什么要分开?
个人理解:很多通用性的东西,比如上面说的VBA库下面的东西,那些都是和Excel本身没有直接联系的,把它单独出来,所有需要使用VBA语言的应用程序都可以使用,维护起来也方便。
我们自己在写程序的时候也要有这种思想,要把功能模块化,提高程序代码的复用。