您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 造纸印刷 > 菜鸟谈VBA最最基础入门2
菜鸟谈VBA最最基础入门《原创》用户窗体-----------------------用户窗体(UserForm对象)是VBA的另一类对象。它表现出来是一个窗口或对话框,如前面我们说的MsgBox与InputBox语句弹出来的都属于窗体。使用窗体可以提供一个形象的用户界面。同我们可以在工作表(WorkSheet)上在添加不同的控件一样,在这个界面上,我们可以添加命令按钮、标签、图像、列表框等控件,用户可以通过修改控件的属性、编写不同的事件过程在程序运行过程中与程序进行交互。1、添加窗体如果你还没有忘记怎么插入模块?那请用同样的方法插入一个用户窗体。Alt+F11快捷键打开VBE编辑窗口,在工程资源管理器窗口中单击右键,选择“插入——用户窗体”命令。Excel为用户窗体取名,同为工作表、按钮等取名一样,采用“老大,老二,老三……”的取名方式。所以新插入的用户窗体默认名称为“UserForm1”,如果再继续插入窗体,就是“UserForm2”,接着是“UserForm3”……当然,你可以为它重新取一个你喜欢的名字,新名字叫大花二花,或者是大狗二狗,随你了,为了方便学习,这里我们统一为其更名为“我的窗体”,方法为:在工程资源管理器中双击窗体对象,在属性窗口中重新修改“(名称)”(对象的name属性)为“我的窗体”即可。修改完成后,可以在工程资源管理器窗口中看到相应的名称已经改变了。这时,窗体的“名称”已经修改好了,再看看窗体,左上角还显示着“UserForm1”,这就相当于贴在一个按钮表面的标签,想要修改它,只需要修改对象的“Caption”属性即可。用改“名称”的方法,我们把这个窗体的“Caption”属性修改为“我的第一个VBA窗体”。就像你家里贴的地板一样,新建的窗体的大小样子都一样。但是我们根据自己的需要对其进行美化或修改。如大小,背景颜色,背景图片等等,我们可以手动在属性窗口里对其进行修改,也可以程序中用代码进行修改。如修改该窗体的宽度,代码设置为:1.我的窗体.Width=500'500是你需要修改后的宽度,以磅(Point)为单位2.复制代码动手试一试,在属性窗口里设置“我的窗体”宽300Point(Width属性),高200Point(Height属性)。2、为窗体添加界面元素窗体就像一个舞台,舞台上得有演员才能和观众进行互动。同样,我们得为窗体这个舞台添加演员,演员可以是命令按钮、标签、文字框等等,你可以根据自己的剧本的需要安排不同的角色。向窗体添加控件,同在工作表中添加窗体控件一样。如果你现在的VBE编辑窗口中没有“工具箱”,请通过“视图——工具箱”菜单命令,或单击“工具栏”上的“工具箱”按钮打开它。想知道“工具箱”里的控件是哪一种是“命令按钮”,哪一种是“标签”,哪一种是“文字框”,只需要把鼠标指针移到相应的控件上面,即会显示相应的说明。在工具箱里用鼠标点选相应的控件,在窗体上按下鼠标左键,拖动即可将控件添加到用户窗体。控件的大小、在窗体上的位置我们可以通过鼠标进行修改,当然,同修改其他属性一样,我们也可以在属性窗口或程序的过程中用代码进行修改。别闲着,动手试一试:(1)向窗体添加一个命令按钮改按钮名称为“确定”。设置显示在按钮上的文字(Caption属性)为“完成”,高25(Height属性),宽60(Width属性),距“我的窗体”左端220(Left属性),距“我的窗体”顶端80(Top属性)。当然,上面只是教你怎样在属性窗口里对控件的属性进行修改。要求不是太完美的时候,我们可以在窗体上用鼠标拖动修改一下就可以了。(2)向窗体添加一个标签改标签的名称为“说明”。设置字体(Font属性)为“宋体,五号,斜体”,显示的内容(Caption属性)为“请输入内容”(慢速双击激活控件即可输入)。(3)向窗体添加一个文字框改文字框的名称为“内容”,设置字体(Font属性)为“楷体五号字”,字体颜色(ForeColor属性)为“红色”。回到窗体设计模式,按F5键(或者执行“运行——运行子过程/窗体”菜单命令,或单击工具栏上的“运行子过程/窗体”命令按钮),完整的一个用户窗体就显示在桌面上了。当然,因为没有添加任何的VBA指令,此时,窗体里的控件是不会工作的。(4)为命令按钮添加事件过程上面的标签,文字框,命令按等控件(ActiveX控件,同我们刚开始说的窗体控件是有区别的)都属于对象,我们可以通过编写相应的代码设置其属性,调用其方法,响应其事件来达到我们需要实现的操作。比如在“我的窗体”中,如果需要在点击“完成”按钮(按钮名称为“确定”)后,用一个Msgbox告诉我们,文字框(名称为“内容”)里输入的是什么内容。有了这个思想,我们可以模拟把程序写为:Sub确定_单击()Msgbox“文字框里输入的内容是:”&内容.输入的内容EndSub有了这个模拟的程序,再来写就简单了。“单击”是“确定”的一个事件,即Click事件,“内容.输入的内容”是读取“内容”的Value属性。这样,我们的程序实际上是:1.Sub确定_Click()2.MsgBox文字框里输入的内容是:&内容.Value3.EndSub4.复制代码回到窗体,双击按钮,切换到代码模式,在左面“对象列表”中选择对象“确定”,右面事件列表中选择事件“Click”,将Sub与EndSub之间输入代码MsgBox文字框里输入的内容是:&内容.Value。回到设计模式下,按F5键,再次运行窗体,在文字框里输入内容,单击“完成”。也许你需要在文字框里什么也没有输时,单击按钮后,提示我们“文字框里没有输入任何内容”,并退出程序。可以的,加一个If—Then语句即可。如果需要将文字框里的内容换行显示,那么在提示内容与显示内容之间再连接一个“Chr(13)”,就个的作用相当工作表中的“Char(10)”,这里不再多说。我最后写的代码是:1.PrivateSub确定_Click()2.If内容.Value=Then3.MsgBox文本框里没有输入任何内容!4.ExitSub'退出sub过程,不再执行下面的语句5.EndIf6.MsgBox文字框里输入的内容是:&Chr(13)&内容.Value7.EndSub8.复制代码3、显示窗体显示窗体就是把窗体显示给用户。显示窗体可以调用窗体的Show方法。窗体的显示模式有两种:(1)模式窗体:窗体显示后将停显示之后的代码直到退出或隐藏此窗体,并且必须退出或隐藏此窗体后,才可以操作非此窗体的其他界面元素。也就是说,当你使用模式窗体显示某窗体的时候,当程序执行完“显示窗体”这条命令后,将暂停执行程序里剩余的语句,真正这个窗体被隐藏或退出。关且当窗体显示出来以后,你不能激活该窗体以外的任何区域。(2)无模式窗体:窗体显示后会继续执行程序里余下的语句,而其他的窗体或界面也可以进行操作。显示窗体的语句:(1)模式窗体的显示代码:窗体名称.ShowvbModal也可以写成:窗体名称.Show1(2)无模式窗体的显示代码:窗体名称.ShowvbModeless也可以写成:窗体名称.Show0悄悄告诉你:因为对于Show方法,如果不指定模式,则默认为模式窗体,又因为我很懒,所以我的习惯是:当我需要用模式窗体的时候,就直接“窗体.Show”,需要无模式的时候就“窗体.Show0”,多个0少个0而已,懒得去记那有模式无模式的字母,我英文差,反正看了也不一定认识。4、关闭窗体当不再需要使用某个窗体后,我们需要把它关闭。当然,每一个窗体上都有“关闭”按钮。但这肯定不能满足我们在程序的设计过程中的需求。我们可以通过Hide来隐藏窗体。代码为:窗体名称.Hide也可以通过Unload来卸载窗体。代码为:Unload窗体名称二者都可以关闭窗体,但是却是有区别的。Show一个Hide的窗体比Show一个Unload的窗体用的时间要短。所以,当你需要反复使用某个窗体的时候,建议你用Hide而不用Unload。------------------------------------------------------------最后-----------------------------------------上面讲的这些内容,打开VBE窗口,插入窗体,添加控件,修改属性,编写事件过程等等,这些,你都跟着做了吗?如果你已经做了,那最后我再留给你一点事情算是作业吧:(1)插入一个模块,编写两个Sub过程,分别以“模式窗口”和“无模式窗口”显示“我的窗体”(可在显示窗体命令的下一行再编写另外一条指令查看两者在程序执行过程中的区别);(2)在工作表上插入两个窗体控件的按钮(记住是窗体控件),分别改按钮上显示的字为“模式窗体”和“无模式窗体”,并把刚才编写的两个宏分别指定给它们;(3)再次进行入“我的窗体”的设计模式,添加两个按钮,分别改其“Caption”属性为“隐藏窗体”和“卸载窗体”。分别为两个按钮编写响应其相应事件的代码,使得当单击“隐藏窗体”按钮时,隐然“我的窗体”,单击“卸载窗体”时,卸载“我的窗体”。弄好后,你可以点击工作表上的铵钮,调出窗体,看看自己的第一件作品了。PS:这是我的作业,供参考!再说Excel的对象模型---------------------在前面的贴子里,我们简单介绍了VBA的开发环境、语法基础及常用的语句。同时对集合、对象、属性、方法和事件等几个重要的概念作了简单的讲解。通过学习,你是否有所收获?我说了,我只是给你指路。就像你说你要到北京天安门看升国旗仪式,我只能告诉你打出租车到机场,花一千块买张机票你就可以去了,我可不能把你背去北京我再要着饭走回来。所以现在,对前面学过的内容,你可以在心里面作一个回顾,问问自己,通过学习,收获了什么?还存在什么不足?接下来该怎么做?适时的小结是很有必要的,可以看到存在的不足和努力的方向。所以这一贴,没有新内容,再来说一说Excel的对象模型,当作是一种对前面的回顾也罢,当作是和大家的一种闲聊也行。不管了!VBA是通过对象操作来操作和控制Excel。不管是操作Excel程序(Application对象)、工作薄(Workbook对象)、工作表(Worksheet对象)、单元格(Range对象)还是操作图表(Chart对象)、窗体(Userfrom对象)等等,都是在操作对象。每个对象都是其他对象的一部分,也可以由其他对象组成。这个前面的贴子已经讲过,这里不再多说。我要说的是,VBA的语法和Excel的对象模型组成了应用ExcelVBA程序设计的基础,从某种意义上来说,理解和熟悉Excel对象模型的过程,也就是使用ExcelVBA进行程序设计的过程。所以,熟悉Excel的对象模型,对我们学习VBA的重要性可想而知。可是,什么是Excel的对象模型?不知道这样讲你是否能理解:家里面有厨房吧?厨房里面有很多的东西,比如碗柜,冰箱等,而碗柜里又有饭碗,盘子等,冰箱里有鸡蛋,黄瓜等。Excel就像一个装了很多东西的大厨房,Workbook对象就像冰箱,Worksheet就像冰箱里的蔬菜啊什么的。当我们给这个大厨房及厨房里的这些对象画一个简单的结构图时,这个结构图我们就称之为对象模型。下面就是Excel的对象模型结构图:Excel对象模型在Excel的帮助文件里就有了,我们可以通过打开帮助来查看它。如果你找不到,请打开你的OFFICE的安装目录,找到\OFFICE11\2052目录下的VBAXL10.CHM。这个文件就是ExcelVBA的Help文件了,双击打开它,你就可以看到我们上面的图了。从对象模型,我们可以看到对象之间的包含关系,Excel最顶端的对象为Application对象,即Excel程序本身,其他所有的对象都是在Application对象的下面。用鼠标单击其中的每一个对象,就可以跳转到对象的说明。呵呵,知道什么是VBA了吧?就是对以上这些对象的操作。就像在厨房里做饭是对厨房里各种对象进行操作一样,在ExcelVba程序设计过程中,我们就是通过读取或设置对象的属性、调用对象的方法、编写事件过
本文标题:菜鸟谈VBA最最基础入门2
链接地址:https://www.777doc.com/doc-6358735 .html