VB编辑器(Visual Basic Editor,VBE)就是VBA的集成开发环境(IDE)。
由于VBA本身的定位为辅助Office文档处理及实现Office自动化,因此开发对象和开发过程相对可控,并且也为了保证Office本身不必因为进一步的扩展而过于庞大。因此,VBE相对比较简约。而这个简约的IDE集成了VBA开发的各种资源、编辑器、调试工具等。因此,原本对于其所设定的定位和目标是完全够用。
1.VBE概况
在Office各个组件中启动VBE的方法相同:单击“开发工具”选项卡—“代码” 组— “Visual Basic”按钮,或者直接在键盘上按快捷组合键“Alt+F11”,即打开如图22-2所示的VBE窗口。
图22-2 VB编辑器
VBE是一个与Word、Excel或者PowerPoint无缝结合的应用程序,它以Office文档为处理对象,可以运行VBA脚本。
每次打开VBE看到的内容会不相同,因为在Word、Excel或者PowerPoint中打开VBE时,在应用软件中与VBA同时打开的每一个文档会被当作VBE的一个“工程(Project)”,并用树形结构展开在左侧的VBAProject窗格中。
虽然Office已经使用了以“功能区—选项卡”为驱动的Modern UI,但是,VBE仍然是传统的“菜单—工具栏”工作模式。
VBE菜单中包含了VBE各种组件的命令,且很多常用命令也被包含在了工具栏中或者各自有其相应的快捷键。例如“运行”窗体或模块的快捷键为F5。
VBE默认只显示“标准工具栏”,这是VBE的六个工具栏之一。其他工具栏(例如编辑代码常用的“编辑工具栏”)可以通过菜单“视图”—“工具栏”打开。
标准工具栏上有常用的“视图”“存盘”等按钮,也有“运行”“中断”等用于运行与调试的命令按钮,还有打开特定窗体的命令按钮。
VBE 的“工程资源管理器”窗口:在左侧的VBE“工程资源管理器”窗口中,每一个Office文档、加载项都被视作一个工程并按树形结构对相关资源进行管理。
“代码窗口”:这实际上是一个VBA资源的代码编辑器,要打开某一对象的代码,只需在“工程资源管理器”窗口中双击该对象,即会弹出该对象的代码窗口。
“立即窗口”:可以直接执行VBA语句、测试语句和调试代码的窗口。例如,在“立即窗口”中输入“msgbox("Hello World!")”,然后按回车键,即可获得“立即”效果。“立即窗口”缺省不可见,可以通过菜单“视图”—“立即窗口”打开,也可按快捷组合键“Ctrl+G”打开。
2.工程资源管理器
VBE的“工程资源管理器”窗口以树形结构列出了当前打开的Office文档和加载项,因此,不能在工程管理器中关闭一个工程(指Word、Excel或PowerPoint文档),如果需要关闭某个工程,只需关闭相应的文档(工作簿或演示文稿)即可。
如图22-3所示,如果将每个工程(Office文档)、加载项作为树形结构的一级节点,例如“工作簿1”“工作簿2”或者“文档1”“文档2”等,则二级节点被组织为“Microsoft Word对象”(或者“Microsoft Excel对象”),与“窗体”“模块”集合位于同一层次。(www.xing528.com)
在工程及下属节点上单击鼠标右键,在右键菜单中,可以查看代码(即打开关联代码的代码窗口)、查看对象(即切换到具体的Office对象,例如工作表)、查看工程属性(甚至可以键入密码锁定工程,除非有特殊情况,一般不建议这样做)。尤其重要的是,可以插入用户窗体、插入模块,这是VBA编程的重要入口。
录制宏时将自动新增一个VBA模块。
此外,可以移除模块,移除之前会提示是否导出模块,如果进行了代码编写工作,建议导出后再移除,以便保留工作代码的备份。
图22-3 VBE的“工程资源管理器”窗口
实 用 技 巧
要把一个工程中的窗体、模块等对象复制到另一个工程,无须进行导出、导入操作,只需打开两个相应的Office文档,然后在工程资源管理器中,通过拖放的方式,将对象从一个工程拖放到另一个工程中,即可完成完整的复制。
3.代码窗口
完成VBA编程的过程,主要是在代码窗口中进行的代码编写(编码)过程。
工程中的每一个对象都有一个关联代码的代码窗口。
VBA代码有三个来源:
录制宏。这一来源所产生的代码不是最优化的代码,但却给编码指定了方向。
复制过去工作中的模块。借鉴前人的代码,特别是在初学或者涉猎新领域时,找到成熟的、可借鉴的“例程”是快速进步的重要途径。
直接编制。
VBE的代码窗口实际上是一个VBA的智能编辑器,具有“自动语法检测”“自动列出成员”“自动显示快速信息”等智能化功能。
编辑器的“代码设置”“编辑器格式”等可以通过“工具”—“选项”打开VBE的“选项”对话框进行调整设置。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。