暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

窗体的加载、卸载及点击事件

VBA语言専攻 2021-11-18
174
【分享成果,随喜正能量】如果我们总在等待绝对的一切就绪,那我们将永远无法开始;平凡的我在人多的地方曾极力小心翼翼,但不知从何起,我不太在意别人的目光了。比起被人觉得是个怪人,我现在更害怕浪费时间;你那么憎恨那些人,跟他们斗了那么久,最终却变得和他们一样,人世间没有任何理想值得以这样的沉沦作为代价;每个人都会有一段异常艰难的时光,生活的压力,工作的失意,学业的压力,爱的惶惶不可终日,挺过来的,人生就会豁然开朗,挺不过来的,时间也会教你,怎么与它们握手言和,所以不必害怕的。
《VBA之Excel应用》是非常经典的,是我推出的第七套教程,定位于初级。这套教程从简单的录制宏开始讲解,一直到窗体的搭建,内容丰富,实例众多。大家可以非常容易的掌握相关的知识,这套教程共三册,十七章,都是我们在利用EXCEL工作过程中需要掌握的知识点,希望大家能掌握利用。今日讲解的内容是“VBA之EXCEL应用”的第十六章“用户窗体(Userform)对象”的第5节:窗体的加载、卸载及点击事件

第五节 窗体事件的响应

大家好,我们在前面讲解了窗体的事件,在这讲中我们再次利用一个实例讲解一下窗体对事件的响应过程。这次讲解的是窗体的单击事件,在点击事件过程中,让窗体改变大小及背景色。

窗体的搭建及思路分析

在VBE窗口插入一个新的窗体UserForm2,这个窗体将响应点击事件。如下界面:
对于这个窗体,我们先不做属性的任何设置,要在代码中加以设置。我们将改变的设置有:窗体的Height,Width这两个属性将改变窗体的大小;BackColor这个属性将改变窗体的背景颜色。由于要在窗体的单击事件中改变上面的三个属性,所以我们将利用随机数来改变上述三个值。
   为了能明显地显示窗体的大小,我们还会利用到窗体的Resize事件,在这个事件中会反馈窗体的大小。
   窗体的加载和卸载。在前面的讲解中讲过窗体的加载过程中首先执行的是Initialize事件,这个事件中要初始化窗体的一些属性设置。窗体的卸载过程:QueryClose事件,这个事件在窗体的关闭之前执行,我们要在这个事件中提示给用户事件的进程;Terminate事件,这个事件是窗体卸载的最后的一个事件,将释放内存。

窗体对点击事件的响应代码及代码解读

看下面的代码:
Private Sub UserForm_Click()
    代码略,见教程
Private Sub UserForm_Initialize()
    代码略,见教程End Sub
Private Sub UserForm_Resize()
   代码略,见教程End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    代码略,见教程End Sub
Private Sub UserForm_Terminate()
   代码略,见教程End Sub

代码截图:

代码解读:
 1)Private Sub UserForm_Click()
     Me.Height = Int(Rnd * 200) + 100
     Me.Width = Int(Rnd * 200) + 100
     Me.BackColor = RGB(Int(Rnd * 100), Int(Rnd * 200), Int(Rnd * 300))
End Sub
上述是窗体的点击事件,这个事件中将改变窗体的HeightWidthBackColor 属性,由于要使每次点击窗体产生不同的属性设置,我们用的是随机数解决。
2)Private Sub UserForm_Initialize()
    Me.Caption = "窗体"
    Me.BackColor = RGB(Int(Rnd * 100), Int(Rnd * 100), Int(Rnd * 100))
End Sub
这是窗体的加载事件,这个事件中设置了窗体的CaptionBackColor属性。
 3Private Sub UserForm_Resize()
    msg = "宽: " & Me.Width & Chr(10) & "高: " & Me.Height
    MsgBox prompt:=msg, Title:="Resize事件"
End Sub
  以上是窗体的Resize事件,这个事件总提示给用户窗体的大小
4Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
     msg = "现在卸载 " & Me.Caption
     MsgBox prompt:=msg, Title:="QueryClose事件"
End Sub
  以上事件是在窗体的关闭前发生,仍是提示用户卸载窗体
5) Private Sub UserForm_Terminate()
     msg = "现在卸载 " & Me.Caption
     MsgBox prompt:=msg, Title:="Terminate事件"
End Sub
以上是窗体的卸载事件,这个事件中将释放内存。

lMe是一个在用户窗体的代码模块中指定该用户窗体的快捷方式,例如,Me. Height表示当前用户窗体的高度

窗体对点击事件响应的代码执行效果

我们点击工作表窗口的运行按钮,这时会弹出用户窗体:
此时我们点击窗体:

我们点击关闭按钮:
至此,整个过程完毕。

今日内容回向:
   1) 窗体的初始化在什么事件中完成?
   2) 窗体的卸载过程中,什么时候内存释放?

 
  



文章转载自VBA语言専攻,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论