Excel Application对象应用大全(四)
Application对象的其它一些属性和方法
Caller属性 Application对象的Caller属性返回调用或执行宏过程的对象的引用,适用于窗体工具栏控件、指定宏的绘图对象和用户自定义函数。在确定调用用户自定义函数的单元格时特别有用,例如下面的示例使用自定义函数WorksheetName函数显示调用该函数的工作表的名称。
在工作表单元格中输入“=WorksheetName()”,将显示该工作表的名称。Application.Caller作为一个Range对象返回对调用该函数的单元格的引用,然后使用Range对象的Parent属性产生对包含该Range对象的Worksheet对象的引用,最后将Worksheet对象的Name属性赋给该函数的返回值。当每次重新计算工作表时,Appliaction对象的Volatile方法强制Excel重新计算该函数。因此,如果改变了工作表的名称,那么该函数将显示新的工作表名称。
如果激活的工作表不是包含该公式的工作表并发生重新计算,则将在原单元格中返回错误的名称。例如,如果在工作表Sheet1中已使用该函数,那么在工作表Sheet2中再次使用该函数时工作表Sheet1中将返回错误的名称,即工作表Sheet2的名称。
Evaluate方法
也可以使用简写格式:
表达式可以是任何有效的工作表计算,在其左边有或者没有等号均可,或者是对单元格区域的引用,包括定义的名称或外部引用,或者是图表对象。工作表计算包含在VBA中不能使用的工作表函数,或者是工作表数组公式。
第一个示例用法的好处是能够非常灵活地使用代码产生字符串值。第二个示例用法更简短,但仅通过编辑代码来修改表达式。下面的过程显示True或者False表明活动单元格是否为空,同时演示了第一个示例用法的灵活性。
注意,使用第二个示例用法不能计算包含变量的表达式。
第一个表达式是不实用的并且极少使用,而第二个表达式虽然极不灵活,却是引用Range对象更简便的方式。通过省略Value属性进一步简化表达式,因为该属性是Range对象的默认属性:
总之,使用方括号的优点在于代码简短,而使用Evaluate方法的优点在于参数是字符串,这样即可以在代码中构造该字符串,也可以使用变量。再举一个示例,下面的代码将工作表Sheet1中单元格A1的字体加粗:
此外,Evaluate方法能够返回工作簿名称集合的内容以及有效地产生数组值。下面的代码创建一个隐藏的名称用来保存密码。在“插入”→“名称”→“定义”对话框中不能看到隐藏的名称,因此这是在工作簿里存储信息的便利方式,不会弄乱用户界面:
然后,像下面的代码一样在表达式里使用隐藏的数据:
Evaluate方法同样适用于数组。下面的表达式产生一个二维的Variant型数组,100行1列,包含从101 到 200的值。执行该过程比使用For…Next循环更有效率。
下面的代码将101至200的值赋给单元格区域B1:B100,同样比For…Next循环更有效率:
OnKey方法
参数Key指定要按的键的字符串。参数Procedure指定要运行的过程名称的字符串,如果为空(”"),则按参数Key指定的键时将不发生任何操作;如果省略该参数,则恢复参数Key指定的键在Excel中的正常操作,同时清除先前使用OnKey方法所做的操作设置。 还可以指定与Shift和/或Ctrl和/或Alt组合使用的键。若要指定与其他键组合使用的键,可使用下表3。
若要为特定字符指定处理过程(如 +、^、% 等等),可以将此字符用花括号括起。
下面的示例将Shift+Ctrl+向右键恢复正常操作。
下面的示例将Shift+Ctrl+向右键键序列设为不发生任何操作。
又如,下面的代码忽略Alt+F4组合键的操作:
即按下Alt+F4组合键后,Excel没有任何反应,不执行任何操作。
ThisCell属性
在用户定义的函数中,用户不能访问Range对象上的属性或方法。当完成了重新计算后,用户可以为今后的使用和执行附加操作而存储Range对象。
使用VBA的Date函数和Mod操作符,更简单地获得相同的结果:
Excel的Concatenate 函数同样也不能用于VBA,但可以使用连接操作符(&)代替,就像在Excel工作表公式里一样。如果一定要在VBA中使用Concatenate函数,可以编写如下的代码:
但下面的代码更简单且结果相同:
VBA函数,例如Date、DateSerial和IsEmpty能够自由地使用,因为它们是<全局>的成员。例如,可以使用下面的代码:
Excel函数,例如VLookup和SUM是WorksheetFuncion对象的方法,可以使用下面的代码:
为了与Excel 5和Excel 95兼容,可以直接使用Application而无需WorksheetFunction:
在VBE编辑器中,输入下面的代码:
将自动显示出能够在VBA中使用的所有工作表函数列表。
自动隐藏公式栏(DisplayFormulaBar属性)
当然,上述代码在Excel 2007中仍然有用,但Excel 2007已经改进了公式栏的特性,即使输入大量的数据,也不会遮盖工作表区域。
获取Excel启动文件夹的路径(StartupPath属性)
检测Excel的版本(Version属性)
Application对象的Version属性返回一个代表当前运行的Excel的版本的字符串,使用Val函数返回该字符串内的数值。该属性通常用于判断当前Excel是否满足程序运行要求。
文件对话框操作(FileDialog属性)
本示例显示“打开文件”对话框,当用户在其中选择一个或多个文件后,将依次显示每个文件的路径。其中FileDialog属性返回打开和保存对话框中一系列对象的集合,可以对该集合对象的属性进行进一步的设置,例如上例中的AllowMultiSelect属性设置为True将允许用户选择多个文件。
将工作簿中的Microsoft Excel列改为“我的工作簿”。
运行上述过程后,将调用Windows的计算器。
运行本程序后,按下弹出的提示框中的“确定”按钮,等待5秒后执行另一程序testFullScreen。
下面的代码先将当前Microsoft Excel的版本与上次计算该工作簿的Excel版本进行比较,如果两个版本不同,则对所有打开工作簿中的数据进行一次完整计算。其中,CalculationVersion属性返回工作簿的版本信息。
控制函数重新计算(Volatile方法)
本示例摸仿Excel中的Rand()函数,当工作表单元格发生变化时,都会重新计算该函数。在例子中,使用了Volatile方法,强制函数进行重新计算,即无论何时重新计算工作表,该函数都会重新计算。
本示例在工作表Sheet1中选定两个命名区域rg1和rg2的重叠区域,如果所选区域不重叠,则显示一条相应的信息。其中,Intersect方法返回一个Range对象,代表两个或多个范围重叠的矩形区域。
本示例使用PathSeparator属性返回路径分隔符(”/”)。
本示例运行后,将当前单元格移至工作表Sheet1中的单元格A154。可以将本技巧运用到工作簿事件中,即当打开某工作簿时,快速定位到上一次退出时的单元格位置。
运行本程序后,若该工作簿未保存,则会弹出对话框询问是否保存。 |
Excel Application对象应用大全(四)相关推荐
- Excel Application对象应用大全
[完美Excel]本文以MSDN中的技术文章<Developers Guide to the Excel 2007 Application Object>为线条,参考了一系列相关技术文章和 ...
- Excel Application对象应用
Application对象是Excel对象模型中最高层级的对象,代表Excel应用程序自身,也包含组成工作簿的许多部分,包括工作簿.工作表.单元格集合以及它们包含的数据. Application对象包 ...
- 如何正确清理Excel互操作对象?
我在C#( ApplicationClass )中使用Excel互操作,并将以下代码放在我的finally子句中: while (System.Runtime.InteropServices.Mars ...
- Windows Server 2003 IIS 使用 Excel.Application
在Server2003服务器系统中,配置ASP调用CreateObject("Excel.Application")对象 1.先在服务器中安装Microsoft Excel 2.打 ...
- Excel.Application手册
定制模块行为 (1) Option Explicit '强制对模块内所有变量进行声明 Option Private Module '标记模块为私有,仅对同一工程中其它模块有用,在宏对话框中不显 ...
- Excel.Application组件使用方法 matlab可以参考使用
Excel.Application组件使用方法,适合应用于使用EXCEL组件做WEB应用开发. 转自http://bbs.xtjc.com/thread-376095-1-1.html 定制模块行为 ...
- Excel.Application使用手册
定制模块行为 (1) Option Explicit '强制对模块内所有变量进行声明 Option Private Module '标记模块为私有,仅对同一工程中其它模块有用,在宏对话框中不显示 Op ...
- Excel.Application使用手册(API)
Excel.Application使用手册 定制模块行为 (1) Option Explicit '强制对模块内所有变量进行声明 Option Private Module '标记模块为私有,仅对同 ...
- Excel.Application组件使用方法,适合应用于使用EXCEL组件做WEB应用开发。
Excel.Application组件使用方法,适合应用于使用EXCEL组件做WEB应用开发. 转自http://bbs.xtjc.com/thread-376095-1-1.html 定制模块行为 ...
最新文章
- halcon算子翻译——set_framegrabber_callback
- 立体相机开发|几何感知的实例分割
- 【PP生产订单】入门介绍(九)
- lstm解决梯度消失
- CRNN:端到端不定长文字识别算法
- html怎样做登录页面,使用HTML 5和CSS3制作登录页面完整步骤
- Python Imaging Library:ImageDraw Module(图像绘制模块)
- 内存颗粒与内存体质的关系
- pandas中category类型的数据处理
- 【XR】AR开发技术栈概述
- 没学历可以学IT吗?
- Grafana 任意文件读取漏洞复现
- 申请微信小程序流程步骤
- 坚鹏:苏州银行《银行数字化运营之行动篇》课程培训圆满结束
- GSM-GPRS-WCDMA-LTE-5g 的总结
- PEEL——深度隐写信息去除攻击——PEEL: A Provable Removal Attack on Deep Hiding
- 2010年安防企业与事件盘点
- 北斗GPS天线使用中注意的问题
- JAVA通幽(八)正则表达式
- No Desktop License Servers available to provide a license
热门文章
- 3个提问,500个回答,“俘获”俞军的姿势有哪些?
- 北京青松精创|肠道菌群失调?粪菌移植治疗帮你找回平衡!
- Spring beanid 同名覆盖问题解决
- 移位运算符,>>,<<以及>>>的含义以及运算方法
- 使用VMware Workstation安装Windows10虚拟机(超详细,每一步都有)
- 基于 DevOps 实践的 .NET Core 给开发者带来了哪些好处?
- 【笑话】金庸笔下的武侠如何杀苍蝇
- 【网页用代码实现空格】
- iOS实现简书的登录验证方式(极验验证)
- 目前电子发票的运转流程图