窗体和控件的常见属性,窗体主要包括哪几种控件及功能

首页 > 实用技巧 > 作者:YD1662023-11-24 23:28:18

【分享成果,随喜正能量】知识缺乏,可以去汲取、去丰富;能力低下,可以去训练、去强化。唯有扩大胸襟、拓宽视野、升华境界不是一件容易的事。它需要不断地学习、自省、淬火、修炼和砥砺。做人、做事有了境界,就会成为仁者、智者。既仁又智,当天下无敌。人渴望被承认,也就是别人的目光,但是同时,当别人的目光围拢过来的时候,他又感到窒息,感到不自由。获得承认和追求自由之间,有一个多么辩证的关系。

《VBA之EXCEL应用》是非常经典的,是我推出的第七套教程,定位于初级。这套教程从简单的录制宏开始讲解,一直到窗体的搭建,内容丰富,实例众多。大家可以非常容易的掌握相关的知识,这套教程共三册,十七章,都是我们在利用EXCEL工作过程中需要掌握的知识点,希望大家能掌握利用。今日讲解的内容是“VBA之EXCEL应用”的第十六章“用户窗体(Userform)对象”的第3节:窗体及控件的常用事件

窗体和控件的常见属性,窗体主要包括哪几种控件及功能(1)

第三节 窗体及控件的常用事件

上一讲讲了窗体的显示,这一讲讲解窗体的事件。所谓事件,简单地说就是对象的响应。对于窗体而言,它会响应用户的什么操作呢?我们看下面的详细讲解。

VBE中的对象可识别的事件是预先确定的,并不是所有对象都会具有相同事件。但每个事件都有一个事件过程的框架与之对应,当某一事件发生时,系统将立即执行对应的事件过程,因此,如果想利用这个过程去完成指定的任务,那么用户就必须在这个对应的事件过程中编写程序代码,以便响应发生的事件,否则,即使发生了可识别的事件,系统也不会做任何操作。

我们可以通过下面介绍的界面看到用户窗体中的事件:

窗体和控件的常见属性,窗体主要包括哪几种控件及功能(2)

1 常用的窗体事件

1) Initialize事件 Initialize事件用来提供应用程序或用户窗体中的控件、变量等进行初始化。该事件的作用和类模块中的该事件相同。

2) QueryClose事件 该事件发生在UserForm关闭之前。通常用这个事件确保在关闭应用程序之前,应用程序包含的用户窗体中没有未完成的任务。该事件的语法格式如下:

格式:Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

该事件括号内有两个参数。其中,参数Cancel是一个整数的值,用于指定是否在所有加载的用户窗体中停止QueryClose事件,当Cancel的值设置为0以外的任意值时,QueryClose事件将停止执行,并防止关闭UserForm与应用程序;参数CloseMode为一个值或常数,用来指示引起QueryClose事件的原因。

CloseMode参数返回下列的值

vbFormControlMenu 0 用户在UserForm上选择“控制”菜单中的“关闭”命令。

VbFormCode 1 由代码调用Unload语句。

vbAppWindows 2 正在结束当前Windows操作环境的过程。(仅用于Visual Basic 5.0。)

vbAppTaskManager 3 Windows 的“任务管理器”正在关闭这个应用。(仅用于Visual Basic 5.0。)

3)Terminate事件 该事件用于删除窗体中对象事例的所有引用。Terminate事件发生在卸载窗体对象之后。如果应用程序为非正常退出,从而导致在内存中删除UserForm的示例,将不会触发Terminate事件。例如,在从内存中删除UserForm之前,应用程序调用了End语句,则UserForm不会触发Terminate事件。

4)Activate和Deactivate事件 当运行中的对象变成活动窗口的时候就会发生Activate事件。而当对象不再是活动窗口时,则会发生Deactivate事件。下面的情况会引发这两种事件:

① Show 对象可使用代码中的Show方法变成活动的,且只有在对象是可见的时候才会发生Activate事件。除非使用Show方法,否则用Load加载的UserForm是不可见的。

 ②切换焦点 在应用程序中移动焦点时,也会引发Activate和Deactivate事件。而将焦点移出或移动到另一个应用程序中的对象并不会触发此事件。在卸载对象时,并不会发生 Deactivate 事件。

5)C1ick单击事件。程序运行时,当用户用鼠标左键单击窗体时,引发该窗体的C1ick事件(也称单击事件)。

6) DblClick双击事件。程序运行时,当用户用鼠标左键双击窗体时,引发该窗体的DblClick事件(也称双击事件)。

7)Load装载事件。运行程序,当系统把窗体由外部存储介质装入内存时,引发该窗体的Load事件(也称装载事件)。

8)Resize改变窗体尺寸事件。程序运行时,当窗体大小被改变时,引发该窗体的Resize事件。

9)Activate激活窗体事件。程序运行时,当窗体变为当前窗体时,引发该窗体的Activate事件(也称激活事件)。

10) Deactivate失去激活事件。程序运行时,当A窗体取代B窗体变成当前窗体时,引发B窗体的Deactivate事件(也称失去激活事件)。

11) Unload卸载事件。当窗体被从内存中卸载时,引发该窗体的Unload事件(也称卸载事件)。

从上面介绍的几个事件来看,事件都是在特定的环境下发生的。比如Click事件,只有在单击某个对象时才会发生。可以跟据这一特点,看出窗体中这些自动执行的事件的顺序是:运行窗体后,窗体执行初始化Initialize事件;然后再执行激活Activate事件;当用户的操作完成后,单击关闭按钮,执行关闭QueryClose事件;然后系统再执行Terminate事件,释放对象和用户窗体在内存中的实例和引用。

2 利用窗体的QueryClose事件,完成不保存退出

QueryClose事件在上面已经详细地讲解,在 UserForm关闭之前发生该事件。当点击窗体右上方的关闭按钮时会有触发,此事件在控制关闭窗体就退出关闭工作簿的时候很有用处,使用登录窗体的朋友不会错过它。如下代码,完整写入到对应窗体代码模块中即可实现点击该窗体的关闭按钮,就执行不保存工作簿就退出。

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode AsInteger)

Application.Quit

ThisWorkbook.Close False

End Sub

Sub mynz()

UserForm1.Show

End Sub

代码截图:

窗体和控件的常见属性,窗体主要包括哪几种控件及功能(3)

窗体和控件的常见属性,窗体主要包括哪几种控件及功能(4)

首页 12下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.