怎样用VBA编程实现按键保存功能(VBA如何用代码定义按钮事件)

No.1

涉及到事件就必须要对类模块进行一个清楚的认识,模块是一个难掌握的部分,当然也是十分有用的部分,如果不是对编程有一定的理解,相对来说学会是有点困难。

VBA如何用代码定义按钮事件,类模块过程定义方法就是这么做

本节主要介绍,如何自己定义一个类来进行按钮事件的过程。

也就是说,通常在窗体中插入一个按钮,系统就自动为按钮定义了许多事件,但那些事件都是空的,需要在VBE编辑窗体中进行编码,然后才能执行。

此文是在编码中进行事件整个过程的定义。

具体看如下示例截图,有些写不清楚的地方,可以在图中找到答案。

VBA如何用代码定义按钮事件,类模块过程定义方法就是这么做

下图为执行后的窗体部分,可以看到有一个文字标签和一个按钮控件。

我们的重点在按钮上。当单击按钮后,出现的内容就是一个事件过程,这个过程怎么生成,就是本节的内容。

VBA如何用代码定义按钮事件,类模块过程定义方法就是这么做

下图为单击按钮后弹出一个新的窗体,这个窗体是预先做好的,不是事件内容,事件执行的内容只是弹出这个窗体。当然了,也可以在事件中编写生成这个窗体以及窗体内容的过程,但那样会显得太高级了,这里就不写了。

VBA如何用代码定义按钮事件,类模块过程定义方法就是这么做

下面进入正题,代码分析。

代码是整个过程的灵魂,没有灵魂就如同没有思想的躯体。所以,一定要看如下的代码。

第一步:

首先新建一个窗体,双击窗体,复制如下代码进去。

Dim Cbtn As New BtnClick '定义Cbtn 一个类名
Private Sub UserForm_Initialize()
Dim ClickBtn As Object '定义一个对象名
Set ClickBtn = Me.CommandButton1 '给对象名关联按钮对象
Cbtn.init ClickBtn '关联BtnClick类
End Sub

每一行都有解释,就不一一介绍了,很明显的说明。

第二步:

新建一个类模块,复制如下代码到类模块。

'声明一个MSForms.CommandButton对象变量
Private WithEvents btnObj As MSForms.CommandButton
'定义一个过程 过程名为init
Public Sub init(ctl As MSForms.CommandButton)
    Set btnObj = ctl '过程功能:把对象参数ctl传递给btnObject变量
End Sub
Private Sub btnObj_Click() '定义btnObj对象的Click事件过程
'------------ 这里写事件过程语句 ----------------
    MsgBox "这是一个按钮事件!"
    UserForm2.Show
End Sub
VBA如何用代码定义按钮事件,类模块过程定义方法就是这么做

第三步:

修改类模块名为:BtnClick

不修改也可以,但是你什么结果也不会看到。

类模块名和第一步里第一行代码有一个关联,至于什么关联,看一下就知道了。

严格来说第三步才是第二步,为什么这么写呢,就是为了说明一点,编码没有严格顺序,但是有严格的规则限制。

只要遵守编码规则,任何顺序都可以颠覆。

第四步:

运行Form1表单,就可以实现按钮事件的整个过程了。

如果想改变按钮事件可以在第二步的第8行开始写自己的代码,无论怎么写都不会改变按钮事件已经生成这件事情。

最后

至于如何新建窗体和按钮控件,新建类模块的方法,可以在VBE里自己完成。

类模块里完成的功能是十分强大的,VBA编程中的很多内容都可以写到类模块中,以后会不断更新一些其它事件定义新建方法,大同小异,当然了本节就是基础,只有把基础学会了,才能够更上一层楼,不是吗?

原创文章,作者:chinaapp,如若转载,请注明出处:https://www.chinaapp.org/vbaanniu.html