Excel的某些行为往往会让用户感到疑惑、对VBA不甚了解的人在初次使用代码时也会碰到一些貌似奇怪的问题。下面我们就从最简单的说起。
问题1:为什么在打开有些Excel文件时出现安全警告?
在打开Excel文件时,我们时常会看到下图所示的安全警告消息框。根据Excel的版本不同或者在Excel 2007以上版本中打开Excel 2003版本的文件,大致会出现图中所示的3类消息框。
这是因为我们打开的工作簿中含有代码,并且在“安全性”(Excel 2003版)或者“信任中心”中对宏进行了较高级别的设置。默认情况下,为了防止宏病毒的侵害,Excel会自动采用较高级别的宏安全设置。
如果我们事先知道宏是安全的,就可以单击启用宏。如果不太确定宏的安全性,可以先选择禁用宏,然后在VBE中查看宏代码,确认是否安全。
问题2:为什么在保存Excel文件时会出现额外的提示信息?
在Excel 2007以上的版本中,当我们保存含有宏代码的工作簿时,有时会出现下图所示的信息框。
在Excel 2007以上的版本中,Microsoft采用了新的文件格式,扩展名为.xlsx的文件中不包含宏代码,不能将代码添加到具有.xlsx扩展名的Excel文件中,即使将宏代码添加到.xlsx的文件中,在保存时Excel也会将代码丢弃。
因此,在以.xlsx为扩展名保存Excel文件时,如果工作簿中含有宏代码,就会出现上图所示的信息框。
在Excel 2007以上的版本中,需要使用扩展名为.xlsm保存包含宏代码的文件。
问题5:为什么Excel界面中没有“开发工具”选项卡?
通常,Excel默认不会在功能区中显示“开发工具”选项卡。您可以选择“文件”——“选项”命令后,在弹出的对话框中选取“开发工具”,使“开发工具”选项卡显示在Excel界面中,如下图所示。
问题4:VBA代码应该放置在哪里?
一般来说,VBA代码可以放置在任意的代码模块里,无论是代表工作簿或工作表的对象模块,还是标准的代码模块,没有硬性的规定或约束。
VBE界面中工程资源管理器里的常见模块如下图。
通常,我们应该把代码放置在标准模块中,包括Sub过程和Function过程,这也便于程序的良好组织。在工作簿对象代码模块和工作表对象代码模块中编写响应工作簿事件和工作表事件的代码,在用户窗体中编写对窗体和窗体中的控件进行操作的代码。
问题5:如何运行VBA代码?
对于初学者来说,运行VBA代码最基本的方式有下图所示的3种方式。
当然,运行VBA代码的方式有很多,包括自定义工具栏、功能区、在工作表中放置控件或图像,等等,我们将在单独的专题中详细介绍。