vb.net form 关闭按钮_如何用VBA代码添加Form窗体表单,看完全明了,详细讲解

NO.1

使用VBA代码添加Form窗体表单,对于一些初学者来说,似乎真的很为难。

除了对代码陌生之外,并不知道如何来进行操作添加后的窗体。

这也是一件十分困扰的事情。

本节将介绍一下,使用vba代码添加窗体,然后在窗体上添加控件,如标签按钮等等方法。

e5c39c6f28c8397c09d33070fe2b19a4.png

NO.2

vba中 VBComponents 集合里包含了模块、窗体、类模块。

添加窗体就用到VBComponents.Add()来进行操作。

如:

ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm)

表示添加一个窗体。

其中vbext_ct_MSForm参数,表示将窗体添加到集合。

类模块vbext_ct_ClassModule 标准模块vbext_ct_StdModule。

新建表单后,运行程序什么也看不到,还需要对表单进行属性设置。

这就是像是盖一栋大楼,只是做了大楼的一个工程设计,仅仅是立项要盖这栋大楼,而没有真正实施盖楼的过程。

所以,名义上的新建了这栋楼,但其并没有变成实际意义上的大楼。

感觉有点不可接受,不管怎么说,以上代码并不能让你看到新建的窗体。

接下来,要对窗体进行一些属性设置,就是说要真正的施工对进入工地盖楼了。

设置窗体属性,要用到Properties()。中文意思就是不动产、财产、所有物等等。

Properties()括号里添加窗体属性名称,然后等于号,属性值。

这样才能够对新建的Form窗体进行实体化赋值。

如下代码:

.Properties("caption") ="我是新建窗体"'窗体标签.Properties("width") = 900'宽.Properties("Height") = 600'高

更多窗体属性可查询帮助。

2eea5bc3f613fb86e22262f876850b84.png

上图为例,将对表格内容作为新建表单的标题名称、宽、高,包括窗体里的标签名称和按钮进行自定义设置。

NO.3

添加窗体之后不是我们的初衷,因为窗体只是一个容器,我们要往里面放很多东西。

这就像大楼主体已经完工,但是不能住人呀,四面没有窗户,也没有各类消防设施,更没有电梯,那么,这就是说,并没有完全得到我们想要的大楼样子。

还要对大楼进行配套设施的安装。

添加标签

那我们再加一个标签吧,就像在大楼顶上安装一个XXX小区的名称,是不是有点意思了。

添加标签代码:

With ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm).Designer.Controls.Add("Forms.Label.1")End With

由于新建的窗体还处在编辑模式下,所以不能直接引用Controls.Add(),要在其前面加Designer。

Designer中文意思就"设计师"。看到了吧,整个过程当中,不能以一种既定的事实来对待这件事情。

就像不能对一栋在建的大楼以成熟小区来对待一样,不能随意进出,也不能以为它是一个有人住的地方,真正意义上它还是不算是一个小区。

只有交付使用之后,才能作为一个正常的对象来对待。

所以,要特别注意的地方在对表单里的对象进行属性设置的时候,前面添加"设计师"Designer。

示例:

默认F为新建的窗体对象。

Dim Lobj As Object        Set Lobj = F.Designer.Controls.Add("Forms.Label.1")         With Lobj            .Caption = "恭喜!你已经成功新建了一个表单窗体。"            .Top = 50            .Left = 0            .Height = 90            .Width = .Parent.Width            .TextAlign = 2                    With .Font                        .Size = 28                        .Name = "黑体"                        .Bold = True                     End With        End With

添加按钮

同理,添加按钮用如下代码:

With ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm) .Designer.Controls.Add("Forms.CommandButton.1")End With

NO.4

显示窗体

如此进行,对代码细致的编写之后,构造整个表单的过程就完成了。

但是,我们还是不能看到它的模样,因为没有把它呈现在眼前。

就比如,在北京盖了一栋大楼,而你在广州。

想要看到这楼,是不是有两个办法,一你亲自来北京,站到大楼下面,二给大楼拍个视频,通过视频信息传输设备观看。

这就是说,这楼是盖好了,在你看到它之前,还有一些方法去完成,不然,真的难说这楼是个什么样子。

说了这么多,编程就是这么玄乎,真真假假,假假真真,要抓到代码表示的实际东西,还真不是一件轻松的事情。

我们接着就是要把窗体呈现在电脑屏幕上,让自己或别人看到它,而不只是某种意义上的代码构造完成这种玄乎的事情。

显示出来也需要一行代码,也十分简单一行代码,如下:

F默认新建的窗体对象

VBA.UserForms.Add(F.Name).Show

运行后效果如下图

d761a1fc7e51b9b7b18a4da7f4cfff53.png

是不是完整了一些,如不添加标签和按钮,那么什么也没有。

这样新建后的表单就有了更多的内容。

NO.5

删除窗体

最后一步删除窗体,这个不提倡使用,但要学会使用。

F为默认新建窗体对象变量。

ThisWorkbook.VBProject.VBComponents.Remove F

这句意思是从VBComponents集合中移除F窗体。

这个不能用大楼来比喻,没有移除大楼的过程,而且操作起来也太困难,也现实中最大把设计图纸销毁,完成移除。

35f3b4a84ba21dd31802cf7849b93c20.png

NO.6

完整代码

以上代码可作为学习之用,以下偌直接复制到自己的VBE窗体中使用即可。

新建窗体过程函数

Private Sub AddNewForm()Dim w As WorksheetSet w = ActiveSheetDim F As ObjectSet F = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm)    With F        .Properties("caption") ="我新建的表单窗体"        .Properties("width") =900        .Properties("Height") = 600        Dim Lobj As Object        Set Lobj = F.Designer.Controls.Add("Forms.Label.1")         With Lobj            .Caption = "恭喜!" & VBA.vbCrLf & VBA.vbCrLf & "你已经成功新建了一个表单窗体。"            .Top = 50            .Left = 0            .Height = 90            .Width = .Parent.Width            .TextAlign = 2            With .Font                .Size = 28                .Name = "黑体"                .Bold = True             End With          End With          With F.Designer.Controls.Add("Forms.CommandButton.1")            .Caption = "关 闭"            .Width = 150            .Height = 28            .Top = Lobj.Top + Lobj.Height + 50            .Left = .Parent.Width  2 - .Width  2          End With    ''''''''''''''''''''''''''''''''''''''''''' Button按钮 CodeModule    With ThisWorkbook.VBProject.VBComponents(F.Name).CodeModule        .InsertLines 2, "Private Sub CommandButton1_Click()"        .InsertLines 3, "Unload me"        .InsertLines 4, "End Sub"    End With            End With        VBA.UserForms.Add(F.Name).Show    ThisWorkbook.VBProject.VBComponents.Remove FEnd Sub

NO.7

学习VBA,从0开始构造一个应用界面,十分不好掌握其中一些代码应用。

有些代码在编辑过程中会遇到很多问题,同时也会增加许多不明白的问题,需要一一解决。

本身VBA已经给出很多常用的一些对象,直接拿来使用就可以,但是对于喜欢结构编程方法的人来说,面向对象真的是小儿科。

怎么办呢,呵呵!努力吧!

---END---

欢迎关注、收藏

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值