您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 机械/模具设计 > VBA中常见自定义控件的应用技巧
VBA中常见自定义控件的应用技巧(2012-12-2818:59:14)转载▼标签:office技巧it分类:技术交流身边有不少朋友都迷上了Office二次开发,平日里没事就喜欢用VBA编写些应用程序来提高自己的办公效率,但也有半途而废、不能要领的,但如果能恰当、合理地使用VBA提供的自定义控件不仅可以让应用程序窗体变得更加美观,同时也能使设计的应用更加的个性化、更加地方便用户的使用呢。小贴士:在默认的情况下,窗体控件工具箱中仅给出了常见的几个控件,事实上,VBA的控件数量远不止这些,用户可以根据需要在控件工具箱上添加一些标准控件或自定义控件,也可以随时删除它们。通常在录入用户的出生日期或查询某个日期的数据时,我们经常会用到日历控件或者日期控件。日历控件(Calendar)在ExcelVBA窗体的工具箱中没有提供日历控件,首次使用该控件时需要将其添加到窗体工具箱中。添加的方法是:打开VBE编辑器,首先在当前工作薄中插入一个用户窗体。接下来单击“工具”菜单的“附加控件”命令,打开“可用控件”对话框,在“可用控件”列表框中选择“日历控件11.0”(Office版本为2003),单击“确定”按钮。此时在窗体工具箱中多出了一个“Calendar”(日历)控件。小贴士:与其它可编程控件一样,日历也有很多的属性,如:BackColor属性可用来设置日历控件的背景色;Year、Month和Day属性可用来提取所选日历的年份、月份和日期;Value属性用于显示用户在日历控件中选定的日期值等。实现的方法是:按Alt+F11组合键打开VBE编辑器,在当前工作薄中插入一个用户窗体,利用日历控件和按钮控件设计如图1所示的用户界面。双击窗体中的命令按钮,在其Click事件中编写下面的代码:PrivateSubCommandButton1_Click()ActiveCell.Value=Calendar1.ValueUserForm1.HideEndSub双击当前的工作表(如sheet1),在其SelectionChange事件中编写下面的代码:PrivateSubWorksheet_SelectionChange(ByValTargetAsRange)'判断用户选中的是否为第3列IfTarget.Column=3ThenUserForm1.ShowEndIfEndSub输入数据时,当用户将光标移到到第3列即出生日期所在列时自动弹出用户窗体,用户选择完日期并单击“插入日期”按钮后,所选日期自动插入到当前的单元格中,同时用户窗体自动隐藏。这样,大家就可以方便地录入日期数据了。日期控件(DTPicker)与日历控件一样,日期控件也是一个用来获取日期的控件,功能大致相同,但操作界面与日历控件略有区别,该控件在应用程序的开发中比日历控件应用更为常见。首次使用日期控件时也需要将其添加到窗体工具箱中去,添加的方法与日历控件类似,日期控件的名字是“MicrosoftDateandTimePickerControl6.0(SP4)”。其主要属性有:Format属性用于指定日期的显示格式;Value属性值与用户选定的日期值有关;Year、Month和Day属性可用来提取所选日期值的年份、月份和日期等。使用窗体查询或采集数据时经常会遇到日期输入的问题。此时既可以手工输入日期数据,也可以单击列表框右侧的下拉按钮选择日期数据(图2),系统可将用户选择的日期值回显到指定的文本框或其它对象中,从而方便了日期数据的查询或采集。很多朋友设计的应用程序不仅操作方便,安装时除了有进度条提示,为了美观,他们有时还在窗体中插入变幻的Flash动画,这些功能到底又是如何实现的呢?进度条控件(ProgressBar)进度条控件是用来显示进度的控件,该控件在应用程序的加载、下载等待、安装等应用中非常的广泛。要使用进度条控件,首先需要从“附加控件”对话框中选中它并将其添加到窗体工具箱上,进度条控件的名字是“MicrosoftProgressBarControl6.0(SP4)”。该控件的主要属性有:Max属性用于指定进度条控件的最大值;Min属性用于指定进度条控件的最小值;Value属性用于显示进度条的进度值。利用进度条控件和标签控件,我们可以设计一个如图3所示的窗体界面,最后在窗体Activate事件中编写如下代码就可以模拟其效果了。PrivateSubUserForm_Activate()ProgressBar1.Min=1ProgressBar1.Max=20000Label2.Caption=0%Fori=1To10000Step0.1ProgressBar1.Value=Str(i)Label2.Caption=Round(i/10000,2)*100&%DoEventsNextiEndSub小贴士:大家可以根据演示的速度来调整代码中的相关数值。需要说明的是:代码中使用了DoEvents函数,其作用是转让控制权,以便让操作系统处理其它的事件。当我们需要执行一段循环代码时,特别是循环的次数较大时,为了防止出现死机或死循环,在循环代码的开始加上Doevents函数以便在程序运行过程中可以中止程序的运行。稍有遗憾的是,本例无法根据系统的运行情况实现进度条加载速度快慢的控制,大家可以进一步对这个功能进行研究和完善噢。Flash控件大家知道在Office组件中插入Flash文件倒是挺方便的,其实在用户设计的应用程序窗体中也可以插入Flash对象噢。当然了,首先要添加“Flash控件”,控件的名字是“ShockwaveFlashObject”。小贴士:在窗体中添加Flash对象的方法与在文档中添加Flash的方法相同,这里就不再赘述了。利用Flash控件对象,我们可以制作出精美的欢迎界面、功能强大的CAI(计算机辅助教学)软件以及一些个性化的应用程序菜单等,结合Flash本身强大的ActionScript命令,我们几乎无所不能。当然了,VBA中的自定义控件也不止我们今天介绍的这几个,在很多时候,其实用户的很多需求利用这些自定义控件就可以很方便地实现了,而不是需要我们辛辛苦苦地去重复编写这些代码。怎么样,学会了这些自定义控件的使用,大家是不是觉得Office二次开发其实很有用呢?
本文标题:VBA中常见自定义控件的应用技巧
链接地址:https://www.777doc.com/doc-2853935 .html