在前面的学习中,你学习到了Excel宏录制器创建的一系列指令是和你实际进行的操作完全等同的。这些指令自动地放在工作簿里一个叫做“模块”的表里。Excel将模块储存在模块文件夹里,这个文件夹在当前工作簿,新工作簿或者个人宏工作簿里面。你必须激活VB编辑器窗口,并且双击工程浏览器里的模块文件夹才能查看到这些模块。当模块表在代码窗口里打开了后,你才能最后分析你的过程代码。
所有录制的指令都包括在“过程”里面。过程里面的每一行都是一个“指令”。指令的类型有很多种,例如,关键词,运算符,或者其它过程的调用。“关键词”代表VB中的一个特殊的意义。你已经学习了最常见的VBA关键词——Sub 和EndSub,它们表示一个过程的开始和结束。关键词默认地显示为蓝色。你不要将这些术语做其它的目的,因为关键词已经被VB保护了。
除了关键词,VB指令里还可以有运算符。运算符有四种类型:算术运算,字符串连接,逻辑运算和比较运算。“运算符”允许你将某些值结合起来。例如,除号运算符(/)可以用来计算总数的百分比。本手册中,你有很多机会看到如何在VBA过程中使用运算符。
VB指令的另外一种类型是过程调用。过程调用让你快速地跳到其它过程并且执行其它指令。是不是很难想象?让我们看一下你在第一章中录制的宏WhatsInACell。 假设你也需要包含同一模块中宏FormulasOnOff中的一些语句。怎么做呢?你可以复制需要的代码行,再粘贴过去。然而,有一种更简单快速的方法。你可以调用这个过程,而不需要在两个过程中复制。例如,你想VB在遇到指令MsgBox "所有操作都已完成"之前执行宏FormulasOnOff里面的指令,只要添加下面一句代码就行:
FormulasOnOff
在你尝试这个例子之前,你必须学会如何给VBA过程和模块命名,已经如何调用不同工程里的过程。
1、启动Excel,打开Chap01.xls,这里储存了宏WhatsInACell代码。你录制了宏FormulasOnOff的个人宏工作簿会自动开启
2、切换到VB编辑器窗口
3、选择VBAProject (Chap01.xls)
4、双击属性窗口里的名称属性,这个操作选中了默认的工程名称VBAProject
5、输入“FirstSteps”作为该VBA工程的名称,回车。注意,工程浏览器现在显示的是名称是
FirstSteps (Chap01.xls)
6、在工程浏览窗口选择VBAProject (Personal.xls)
7、双击属性里的名称属性
8、输入“Personal”作为它的名称,回车
技巧:避免名称冲突
为了避免VBA工程之间的命名冲突,请给你的工程独特的名称。你可以使用下述方法之一来更改工程名称:
1、在工程浏览器窗口,选择工程名称,双击属性窗口里的名称属性,再输入新的名称
2、在工程浏览器窗口,在工程名称上单击右键,并且选择“工程名称属性”。出现如下图显示的
工程属性对话框,在工程名称文本框里面输入新的名称
工程属性窗口可以用来更改当前被选中的工程名称和描述3模块重命名
当你录制宏或者创建新的过程时,VB会创建一个模块文件夹来储存你的VBA 代码。 第一个文件夹叫“模块1”,第二个叫“模块2”,等等。你打开一个新的工作簿并且创建VBA工程时,新VBA工程里的模块文件夹又会命名为“模块1”,“模块2”,等等。模块拥有相同的名称不但对你,而且对VB造成很大混淆,因为,它要在一个打开许多工程的环境中执行你的宏或工程。
为了避免模块混淆,给FirstSteps(Chap01.xls) 工程和 Personal(Personal.xls) 工程里的“模块1”重新命名:
1. 在工程浏览器窗口,选择FirstSteps (Chap01.xls)工程,并且选择“模块1”
2. 双击属性窗口里的名称属性,这个动作选中了模块的默认名称“模块1”
3. 输入“WorksheetFormatting”作为模块1的名称,并且回车。注意,工程浏览器窗口现在显示的模块名称是“WorksheetFormatting”
4. 在工程浏览器窗口选择Personal (Personal.xls)
5. 双击属性窗口里的名称属性
6. 输入“Switches”作为模块1的名称,回车
Sub WhatsInACell()
<这里是你录制的指令>
FormulasOnOff
End Sub
然而,如果两个或者两个以上的模块含有这个相同的过程名称,你除了要明确过程名称外,还必须包括模块名称。假设工程FirstSteps (Chap01.xls)有三个模块。模块FormulaFormatting包含宏WhatsInACell,但是,模块Switches和模块Formulas都含有一个叫FormulasOnOff的宏。如何在WhatsInACell调用FormulasOnOff(模块Switches里面的)?请看下面例子:
Sub WhatsInACell()
<这里是你录制的指令>
Switches.FormulasOnOff
End Sub
要调用其它工程里的过程,你必须建立对该工程的引用。你可以在“引用”对话框进行这些操作。因为FormulasOnOff在Personal(Personal.xls)工程里,在你能够从WhatsInACell调用它之前,你需要添加对“Personal”的引用。下面是几种建立引用的方法:
1. 在工程浏览器窗口,点击FirstSteps (Chap01.xls)
2. 选择“工具”-“引用”
3. 在引用对话框,选中“Personal”旁边的勾选框,如下图所示。然后点击确定(在截图前,我并没有保存Personal,所以在附图里没有Personal一行,如果你依照手册中一步一步走下来,应该没有问题)
1. 在工程浏览器窗口,选择FirstSteps (Chap01.xls)并且定位到含有WhatsInACell的模块
2. 在MsgBox "所有操作都已完成"之前增加一空白行,并且输入代码:FormulasOnOff
3. 返回到Excel界面,确保当前工作表是这个例子数据
4. 使用任何你在第一章里学到的方法来运行宏WhatsInACell
如果你给两个不同工程里的不同过程以相同的名称,那么你必须明确工程名称才能调用它。
我们假设FirstSteps (Chap01.xls)工程和Personal (Personal.xls) 工程里都有叫FormulasOnOff的宏,要调用Personal (Personal.xls)工程里的FormulasOnOff(记住,你已经必须先建立对Personal的引用),必须包括工程名称:
Sub WhatsInACell ( )
<这里是你录制的指令>
Personal.Switches.FormulasOnOff
End Sub
技巧:VB如何定位被调用的过程
当你调用一个过程,VB先在主调方(WhatsInACell)的同一个模块里查找。如果没有找到被调过程(FormulasOnOff),VB就会在同一个工程的其它模块里查找。如果还是找不到,VB则会检查对其它工程的引用。
技巧:工程名称不在引用对话框
如果你想要调用一个当前关闭的工程里的过程,当你打开引用对话框试图建立引用时,这个过程名称不在清单中。点击“浏览”,并且打开被调用过程所在的文件夹。添加引用的对话框默认地列出数据库文件(*.olb, .tlb, .dll)。从文件类型的下拉清单中选择Excel文件(*.xls, *.xla),选择并打开含有你要调用过程的文件。这个工程的名称将会加在引用对话框的最后一行。
ASP.NET Web Forms - 导航本节主要介绍了 ASP.NET 网站导航及导航控件如何使用。ASP.NET 带有内建的导航控件。网站导航 维护大型...
ASP.NET Image ImageAlign 属性 Image 控件定义和用法 ImageAlign 属性用于设置或返回图像的对齐方式。 语法asp:Image ImageAlig...
ASP.NET ListItem Enabled 属性 ListItem 控件定义和用法 Enabled 属性用于设置或返回是否默认地启用 ListItem。 如果该属性设置...
ASP.NET CalendarDay IsToday 属性 CalendarDay 控件定义和用法 IsToday 属性用于获取日期是否是当前日期。 如果日期是当前日期...
ASP.NET CheckBox Checked 属性 CheckBox 控件定义和用法 Checked 属性规定 CheckBox 控件是否已选中。 CheckBox 默认为未选中。...
ASP.NET BackColor 属性 Style 控件定义和用法 BackColor 属性用于设置或返回控件的背景颜色。 语法asp:webcontrol id="id" Back...
ASP.NET Web Forms - HTML 服务器控件 本节为你介绍ASP.NET 中的 HTML服务器控件。HTML 服务器控件是服务器可理解的 HTML 标签。...
文件上传本节介绍了 ASP.NET 中使用的两种向网页上传文件的方法。ASP.NET 包含两个控件可以使用户向网页服务器上传文件。一旦服...
Panel 控件Panel 控件可以作为一个页面上的其他控件的容器。它控制其包含的控件的外观和可视度。它还允许生成控件编程。面板控件...
本节介绍使用ASP.NETWebPages 来实现风格统一的页面布局。通过 Web Pages ,创建一个布局一致的网站是很容易的事。 一致的外观 ...