如何用VBA代码添加Form窗体表单,看完全明了,详细讲解
xsobi 2024-12-09 18:25 1 浏览
NO.1
使用VBA代码添加Form窗体表单,对于一些初学者来说,似乎真的很为难。
除了对代码陌生之外,并不知道如何来进行操作添加后的窗体。
这也是一件十分困扰的事情。
本节将介绍一下,使用vba代码添加窗体,然后在窗体上添加控件,如标签按钮等等方法。
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'高
更多窗体属性可查询帮助。
上图为例,将对表格内容作为新建表单的标题名称、宽、高,包括窗体里的标签名称和按钮进行自定义设置。
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
运行后效果如下图
是不是完整了一些,如不添加标签和按钮,那么什么也没有。
这样新建后的表单就有了更多的内容。
NO.5
删除窗体
最后一步删除窗体,这个不提倡使用,但要学会使用。
F为默认新建窗体对象变量。
ThisWorkbook.VBProject.VBComponents.Remove F
这句意思是从VBComponents集合中移除F窗体。
这个不能用大楼来比喻,没有移除大楼的过程,而且操作起来也太困难,也现实中最大把设计图纸销毁,完成移除。
NO.6
完整代码
以上代码可作为学习之用,以下偌直接复制到自己的VBE窗体中使用即可。
新建窗体过程函数
Private Sub AddNewForm()
Dim w As Worksheet
Set w = ActiveSheet
Dim F As Object
Set 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 F
End Sub
NO.7
学习VBA,从0开始构造一个应用界面,十分不好掌握其中一些代码应用。
有些代码在编辑过程中会遇到很多问题,同时也会增加许多不明白的问题,需要一一解决。
本身VBA已经给出很多常用的一些对象,直接拿来使用就可以,但是对于喜欢结构编程方法的人来说,面向对象真的是小儿科。
怎么办呢,呵呵!努力吧!
---END---
欢迎关注、收藏
- 上一篇:一篇文章搞懂Django中的form表单
- 下一篇:Django——form表单
相关推荐
- 斗鱼针针成旻云个人资料 针针年龄身高演艺经历介绍
-
[闽南网]针针成旻云曾是七煌旗下签约艺人,经常在斗鱼进行直播身高超过170cm的她更因为有一双大长腿而被称为“斗鱼第一美腿”、“电竞第一腿”。本文这就来对针针的个人资料进行详细介绍,想知道她的年龄身高...
- 轻量级RTSP服务模块和RTSP推流模块适用场景区别
-
好多开发者一直搞不清轻量级RTSP服务SDK和RTSP推流SDK的区别,以下是相关区别:1.轻量级RTSP服务模块:轻量级RTSP服务解决的核心痛点是避免用户或者开发者单独部署RTSP或者RTMP服...
- 《新·奥特曼》11月18日国内视频平台上线
-
《新·奥特曼》海报。新京报讯11月14日,由上海新创华文化发展有限公司授权引进电影《新·奥特曼》宣布正式定档11月18日(周五)00:00上线视频平台,上线版本为日语配音中文字幕版。影片由庵野秀明(...
- 剑指Apple Watch!Android Wear也将支持视频功能
-
想必智能手表发展到现在,大家最期待的还是视频功能,近日AndroidWear就实现了这一功能,以后就能在手表上看视频了,想想就挺激动的,快来看看吧!其实早在WWDC大会上,老对手AppleWatc...
- QT应用编程:基于VLC开发音视频播放器(句柄方式)
-
一、环境介绍操作系统:win1064位QT版本:QT5.12.6编译器:MinGW32VLC版本:...
- OBS 源码分析 obs开发
-
本文将按照数据源的获取、渲染、推送的直播流程来让大家深入了解一下。1、直播源数据获取obs在启动时会优先加载libobs核心库,这个库初始化obs很多内容,包括crash模块、com、性能监...
- Android和iOS端Moments更新:支持视频分享功能
-
Moments是社交网络巨头Facebook推出的一款私人照片分享应用,今天公司宣布对Android端和iOS端应用同时升级,新增对视频分享功能的支持。事实上早在数周之前,Facebook就曾表示Mo...
- 您很快就可以在Android Galaxy设备之间传输视频通话
-
在阅读此文之前,辛苦点击右上角的“关注”,既方便您进行讨论与分享,又能给您带来不一样的参与感,感谢您的支持!导语:在科技领域,每时每刻都有新的发展,令人兴奋的创新不断涌现。早在八月份,Android系...
- 一篇文章带你FFmpeg到流媒体服务器开发
-
安装ffmpeg:下载FFmpeg和libx264的包ffmpeg-2.4.1.tar.bz2last_x264.tar.bz2libx264需要yasm,所以先安装yasmapt-getinst...
- YouTube 为 Android 平台提供 1440P 视频
-
安锋网8月10日消息,Android从起初的480P的屏幕分辨率发展到2014年的1440P花了将近六年的时间,一般认为1080P的屏幕分辨率已经是人眼可以识别的极限,但是...
- FFmpeg 调用 Android MediaCodec 进行硬解码(附源码)
-
FFmpeg在3.1版本之后支持调用平台硬件进行解码,也就是说可以通过FFmpeg的C代码去调用Android上的MediaCodec了。在官网上有对应说明,地址如下:trac....
- Android FFmpeg + OpenGL ES YUV Player
-
1、FFmpeg解出YUV帧数据1.1方法介绍打开封装格式上下文...
- 基于WebRTC的Android移动端无线视频传输
-
摘要:视频传输技术在现代社会广泛应用,人们对其的要求也越来越高,其发展的趋势是方便、快捷、随时随地。传统的视频传输过于依赖线路,线路的走向限制了传输的很多可能,所以无线传输才是发展的方向。本文提出...
- 使用python爬取抖音app视频 python爬取抖音视频数据
-
记录一下如何用python爬取app数据,本文以爬取抖音视频app为例。编程工具:pycharm...
- Android IOS WebRTC 音视频开发总结(七七)-- WebRTC的架构和协议栈
-
本文主要介绍WebRTC的架构和协议栈(我们翻译和整理的,译者:litie),最早发表在【编风网】为了便于理解,我们来看一个最基本的三角形WebRTC架构(见下图)。在这个架构中,移动电话用“浏览器M...
- 一周热门
- 最近发表
- 标签列表
-
- grid 设置 (58)
- 移位运算 (48)
- not specified (45)
- patch补丁 (31)
- strcat (25)
- 导航栏 (58)
- context xml (46)
- scroll (43)
- element style (30)
- dedecms模版 (53)
- vs打不开 (29)
- nmap (30)
- c 视频教程下载 (33)
- paddleocr (28)
- listview排序 (33)
- firebug 使用 (31)
- transactionmanager (30)
- characterencodingfilter (33)
- getmonth (34)
- commandtimeout (30)
- hibernate教程 (31)
- label换行 (33)
- curlpost (31)
- android studio 3 0 (34)
- android开发视频 (30)