Alt+F11快捷键打开VBE编辑窗口,在工程资源管理器窗口中单击右键,选择?插入——用户窗体?命令。
1-1.jpg (33.67 KB)
Excel为用户窗体取名,同为工作表、按钮等取名一样,采用?老大,老二,老三……?的取名方式。所以新插入的用户窗体默认名称为?UserForm1?,如果再继续插入窗体,就是?UserForm2?,接着是?UserForm3?……
当然,你可以为它重新取一个你喜欢的名字,新名字叫大花二花,或者是大狗二狗,随你了,为了方便学习,这里我们统一为其更名为?我的窗体?,方法为:在工程资源管理器中双击窗体对象,在属性窗口中重新修改?(名称)?(对象的name属性)为?我的窗体?即可。修改完成后,可以在工程资源管理器窗口中看到相应的名称已经改变了。
1-2.jpg (81.78 KB)
这时,窗体的?名称?已经修改好了,再看看窗体,左上角还显示着?UserForm1?,这就相当于贴在一个按钮表面的标签,想要修改它,只需要修改对象的?Caption?属性即可。用改?名称?的方法,我们把这个窗体的?Caption?属性修改为?我的第一个VBA窗体?。 就像你家里贴的地板一样,新建的窗体的大小样子都一样。但是我们根据自己的需要对其进行美化或修改。如大小,背景颜色,背景图片等等,我们可以手动在属性窗口里对其进行修改,也可以程序中用代码进行修改。如修改该窗体的宽度,代码设臵为: 代码:
我的窗体.Width = 500 '500是你需要修改后的宽度,以磅(Point)为单位 动手试一试,在属性窗口里设臵?我的窗体?宽300 Point(Width属性),高200 Point(Height属性)。
2、为窗体添加界面元素
窗体就像一个舞台,舞台上得有演员才能和观众进行互动。同样,我们得为窗体这个舞台添加演员,演员可以是命令按钮、标签、文字框等等,你可以根据自己的剧本的需要安排不同的角色。
向窗体添加控件,同在工作表中添加窗体控件一样。如果你现在的VBE编辑窗口中没有?工具箱?,请通过?视图——>工具箱?菜单命令,或单击?工具栏?上的?工具箱?按钮打开它。
1-3.jpg (55.44 KB)
想知道?工具箱?里的控件是哪一种是?命令按钮?,哪一种是?标签?,哪一种是?文字框?,只需要把鼠标指针移到相应的控件上面,即会显示相应的说明。
在工具箱里用鼠标点选相应的控件,在窗体上按下鼠标左键,拖动即可将控件添加到用户窗体。控件的大小、在窗体上的位臵我们可以通过鼠标进行修改,当然,同修改其他属性一样,我们也可以在属性窗口或程序的过程中用代码进行修改。 别闲着,动手试一试:
(1)向窗体添加一个命令按钮 改按钮名称为?确定?。设臵显示在按钮上的文字(Caption属性)为?完成?,高25(Height属性),宽60(Width属性),距?我的窗体?左端220(Left属性),距?我的窗体?顶端80(Top属性)。 引用:
当然,上面只是教你怎样在属性窗口里对控件的属性进行修改。要求不是太完美的时候,我们可以在窗体上用鼠标拖动修改一下就可以了。 (2)向窗体添加一个标签 改标签的名称为?说明?。设臵字体(Font属性)为?宋体,五号,斜体?,显示的内容(Caption属性)为?请输入内容?(慢速双击激活控件即可输入)。 (3)向窗体添加一个文字框 改文字框的名称为?内容?,设臵字体(Font属性)为?楷体五号字?,字体颜色(ForeColor属性)为?红色?。
回到窗体设计模式,按F5键(或者执行?运行——>运行子过程/窗体?菜单命令,或单击工具栏上的?运行子过程/窗体?命令按钮),完整的一个用户窗体就显示在桌面上了。
1-4.jpg (23.78 KB)
当然,因为没有添加任何的VBA指令,此时,窗体里的控件是不会工作的。 (4)为命令按钮添加事件过程
上面的标签,文字框,命令按等控件(ActiveX控件,同我们刚开始说的窗体控件是有区别的)都属于对象,我们可以通过编写相应的代码设臵其属性,调用其方法,响应其事件来达到我们需要实现的操作。
比如在?我的窗体?中,如果需要在点击?完成?按钮(按钮名称为?确定?)后,用一个Msgbox告诉我们,文字框(名称为?内容?)里输入的是什么内容。 有了这个思想,我们可以模拟把程序写为: Sub 确定_单击()
Msgbox ?文字框里输入的内容是:? & 内容.输入的内容 End Sub
有了这个模拟的程序,再来写就简单了。
?单击?是?确定?的一个事件,即Click事件,?内容.输入的内容?是读取?内容?的Value属性。
这样,我们的程序实际上是: 代码:
Sub 确定_Click()
MsgBox \文字框里输入的内容是:\内容.Value End Sub
回到窗体,双击按钮,切换到代码模式,在左面?对象列表?中选择对象?确定?,右面事件列表中选择事件?Click?,将Sub与End Sub之间输入代码MsgBox \文字框里输入的内容是:\& 内容.Value。回到设计模式下,按F5键,再次运行窗体,在文字框里输入内容,单击?完成?。
也许你需要在文字框里什么也没有输时,单击按钮后,提示我们?文字框里没有输入任何内容?,并退出程序。可以的,加一个If—Then语句即可。如果需要将文字框里的内容换行显示,那么在提示内容与显示内容之间再连接一个?Chr(13)?,就个的作用相当工作表中的?Char(10)?,这里不再多说。
我最后写的代码是: 代码:
Private Sub 确定_Click() If 内容.Value = \
MsgBox \文本框里没有输入任何内容!\
Exit Sub '退出sub过程,不再执行下面的语句 End If
MsgBox \文字框里输入的内容是:\内容.Value End Sub
3、显示窗体
显示窗体就是把窗体显示给用户。 显示窗体可以调用窗体的Show方法。 窗体的显示模式有两种:
(1)模式窗体:窗体显示后将停显示之后的代码直到退出或隐藏此窗体,并且必须退出或隐藏此窗体后,才可以操作非此窗体的其他界面元素。
也就是说,当你使用模式窗体显示某窗体的时候,当程序执行完?显示窗体?这条命令后,将暂停执行程序里剩余的语句,真正这个窗体被隐藏或退出。关且当窗体显示出来以后,你不能激活该窗体以外的任何区域。
(2)无模式窗体:窗体显示后会继续执行程序里余下的语句,而其他的窗体或界面也可以进行操作。
显示窗体的语句:
(1)模式窗体的显示代码: 窗体名称.Show vbModal
也可以写成:窗体名称.Show 1 (2)无模式窗体的显示代码: 窗体名称.Show vbModeless 也可以写成:窗体名称.Show 0
引用:
悄悄告诉你:因为对于Show方法,如果不指定模式,则默认为模式窗体,又因为我很懒,所以我的习惯是:当我需要用模式窗体的时候,就直接?窗体.Show?,需要无模式的时候就?窗体.Show 0?,多个0少个0而已,懒得去记那有模式无模式的字母,我英文差,反正看了也不一定认识。 4、关闭窗体
当不再需要使用某个窗体后,我们需要把它关闭。当然,每一个窗体上都有?关闭?按钮。但这肯定不能满足我们在程序的设计过程中的需求。 我们可以通过Hide来隐藏窗体。代码为: 窗体名称.Hide
也可以通过Unload来卸载窗体。代码为: Unload 窗体名称
二者都可以关闭窗体,但是却是有区别的。Show一个Hide的窗体比Show一个Unload的窗体用的时间要短。所以,当你需要反复使用某个窗体的时候,建议你用Hide而不用Unload。 ------------------------------------------------------- 上面讲的这些内容,打开VBE窗口,插入窗体,添加控件,修改属性,编写事件过程等等,这些,你都跟着做了吗?如果你已经做了,那最后我再留给你一点事情算是作业吧: