首页 ExcelVBA用户窗体编程基础

ExcelVBA用户窗体编程基础

举报
开通vip

ExcelVBA用户窗体编程基础ExcelVBA用户窗体编程基础 ExcelVBA用户户程基户窗体 概述 当使用MsgBox函和数InputBox函不能户足用户交互的需求户~能使用用户自定户户户。能使用用户户示所数与您窗体来框您窗体来户入的据~甚至能使用用户户建一完整的用户界面~而不户用户接到户子表格本身。数您窗体个会触 您在Windows户户中所看到的大多控件都能在用户中户户命令按户~户户按户~户户~文本~户合加上一些其不框数窗体——框框框——它 常用的控件像户像~日户~等等。 本文介户了用户的基本念~介户了使用用户的常用技户。其中~也户解了...

ExcelVBA用户窗体编程基础
ExcelVBA用户窗体编程基础 ExcelVBA用户户程基户窗体 概述 当使用MsgBox函和数InputBox函不能户足用户交互的需求户~能使用用户自定户户户。能使用用户户示所数与您窗体来框您窗体来户入的据~甚至能使用用户户建一完整的用户界面~而不户用户接到户子 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 格本身。数您窗体个会触 您在Windows户户中所看到的大多控件都能在用户中户户命令按户~户户按户~户户~文本~户合加上一些其不框数窗体——框框框——它 常用的控件像户像~日户~等等。 本文介户了用户的基本念~介户了使用用户的常用技户。其中~也户解了一些最通用的思路。在文章中列户了一包窗体概并窗体个 含所有户程的完整的示例文件~以及户户户些户程的代户~户能在户中看到所有工作的基本原理和方法。您践本文包含以下容,内 ? 基本的用户操作窗体 ? 用户和控件的性窗体属 ? 一用户的生命周期个窗体 ? 用户和控件的事件窗体 ? 户户1,如何在用户户户户户据,窗体数 ? 户户2,如何到我的中的某户控件,找窗体 ? 户户3,如何户取据到列表中,数框 ? 户户4,如何户循户户建户度,条 ? 一完整的用户户合示例个窗体 基本的用户操作窗体 • 户建一。打户个窗体VBE户户器(户户菜户“工具宏————Visual Basic户户器”或按Alt+F11户合户)~户户菜户“入用户”~或者插——窗体 在工程口中户户右户~户出的快捷菜户中户户“入用户”~可户建一。窗从插——窗体即个窗体 • 添加控件。户建了一后~户示一名户“控件工具箱”的浮户工具箱当你个窗体将会个(如果有户工具箱的户~可以户户菜户中没您从 找它到)~其中户示了最普遍的控件户型。户户想要的控件~拖户到的用户中。您它您窗体• 更多的控件。有一些更多的可用的控件~可以在控件工具箱中户户右户~中户户“附加控件”~能添加日户、户子表格、户您从您形~等等。 • 添加事件程序。事件允户用户户和控件户行操作户作出相户的反户~事件程序要放置在用户模户中~能通户户户户或控当窗体窗体您双窗体 件打户代户模户口~或者在或控件中户户右户~快捷菜户中户户“户看代户”打户代户模户口~或者在工程口中的用户来窗窗体从来窗窗窗 体来窗窗窗体户户上户户右户后户户“户看代户”打户代户模户口。然后~在代户模户口中~户或控件添加相户的事件程序代户。 • 户示。打户模户~按窗体窗体F5户可以行宏程序~或者户户工具户中的行按户~户示用户。注意~在模户中按运运将窗体窗体F5户并 不行光户所在的子户程~而是行用户自身。会运运窗体 • 户户。和在宏程序中一户~按F8户允户逐户句行代户。您运 用户和控件的性窗体属 窗体属和控件都有性(如尺寸、位置~等等)~能在户置户改户户些性~且户中的大多性也能户在行户通户代户您窗体属并它数属运来 改户。在户置户所户户的户是缺省户~在行户所作的户化户被户户有效。窗体您运您当窗体装 两个属最重要的性是Name属性和Value属性, • Name属个您号会称性可用于指定某控件。能通户控件的索引指定控件~但户户户于理解和户户~因此~使用名是更可取的。• Value属您数属区框性是所使用的户户户入或者户出的据。在不同的控件中~户性户稍有户。例如~户户按户控件和户户控件的Value属性户户True/False~而文本控件的框Value户户是户文本所包含的文本。框Value属既性可用于户入~也可用于户出。例如, ‘********************** txtFirstName.Text = Range("A1").Value Range("B1").Value = optVegetarian.Value ‘********************** 一好户户个 户的和控件起一具有描述性且分户楚的名字。户户在每户控件名前加一前户是有助的~例如~您窗体个清您将会个很帮frm代表窗体~opt代表户户按户~等等。户户使的代户更易户户~且也允户使用一些技户~否户代户户户。将会您并会您将会很 指定控件和~以及窗体Me户户字 当窗体窗体您在代户模户中指定中的控件户~能通户名字指定他户~例如txtFirstName.Value=”John”。户于在其中的控件~它窗体窗体名户放在控件名之前~例如~frmEmployees.lstDepartments。 同户的方法户在模户中所明的公共户量也是有效的户是的基本性窗体声——窗体属(例如~frmImputs.AllDone)。注意~不能在用户您窗体声的代户模户中明全局户量。 Me是一在用户的代户模户中指定户用户的快捷方式个窗体窗体(例如~Me.Height表示前用户的高度当窗体)。又如~在用户窗体UserForm1中指定TextBox1: ‘********************** '在前用户模户中当窗体 Me.TextBox1.Text = "Example" '在不同的模户中 UserForm1.TextBox1.Text = "Example" ‘********************** 一的生命周期户示和户户个窗体—— 您窗体窗窗体可以在口中或者是在的代户模户中~按F5户户示的。如果在模户中有一来您窗体个Userform_Initialize户程~那户在窗体将运户示户~户户程首先行。 如果要使用代户户示和户藏的您窗体(例如~可能想在您frmIntro窗体个来中使用一命令按户户藏frmIntro窗体并户示frmMain窗体)~户户使用您Show方法(户示窗体)和Hide方法(户藏窗体)。 装卸户和户 窗体装内您个没装窗体窗体将装窗体户示之前~必户户到存中。如果户示一有户的~户自户户。事户上~中的任何引用或者户量或者控件或者性都强制户~且户初始化事件。如果想初始化但不户示的户~能使用如下方式户,属将装并触您窗体窗体您装 Load frmMain 在户藏了后~户仍然被户。如果再次户示~初始化程序不再行。窗体窗体装您它会运(但Activate程序行。将会运)户了存中从内清窗体您卸除~必户户(unload)它当窗体窗体将卸。用户户户户户按户户户户~自户户。 因此~户和户的户序是,户窗体装卸装(Load)—户示(Show)—……—户藏(Hide)—卸(Unload)户。 卸会清户除模户中的所有的户量户似于停止了一户程。用户已户户入的任何户都户失~控件恢户户在性口中户入的窗体——个数将将您属窗 缺省户。如果想保存户的户~需要在户户户前户行保存。您它您卸窗体 模式和无模式 窗体两即窗体当窗体能在户“模式”之户户示~模式或者无模式。模式不允户用户户示户在Excel中户行其的操作~像它MsgBox户户框窗体一户。无模式允户用户在Excel中户行其操作~然后回到中。它窗体来 当窗体将您窗体个来窗体无模式户示户~代户在后台户户户行。能使代户户户停止~直到户户后户户户行。可使用一循户户句户户户户是否已户户,‘********************** Do Until frmOther.Visible = False DoEvents Loop ‘********************** 缺省户置是模式。一旦作户模式户示后~不能改户户无模式。必户先户藏户~然后再户示~指定户窗体窗体窗体您将它窗体您窗体它并 无模式。窗体 无模式户户窗体Excel2000及以上版本有效。 用户和控件的事件窗体 事件允户和控件户用户所做的操作作出相户的反户。可能熟悉窗体您ExcelVBA事件~如Workbook_Open~Worksheet_Change等等。在Excel中~如果有事件~能做一些操作~但是在中~如果有事件的户~乎什户作用。没您窗体没窗体几没 • 最常用的事件包括初始化窗体窗体(Intialize)、激活窗体(Activate)、户求户户窗体(QueryClose)、以及户户窗体(Click)。• 窗体中控件的常用事件包括更新后(AfterUpdate)、户化(Change)、户户(Click)、户入(Enter)、以及退出(Exit)。 户了入某户象的事件户程~可以在户户象上户户右户~在快捷菜户中户户”户看代户”~自户户建一户控件户准的事件户程。如果插您将会个您 想户建不同的事件户程~可以从VBE窗您个您窗体窗口户部右户的下拉列表中户户想户建的事件户程。户有一方法是~可以先户入代户口~在代户口户部的左户的下拉列表中户户户象~在右户的下拉列表中户户相户的事件。窗 用户初始化窗体 最重要的用户事件是初始化窗体(Initialize)事件。初始化是户生在用户中的第一件事情只要用户户始户~就户初始窗体——窗体装会触 化事件。 在户里~可以初始化户量和控件。例如~能户子表格中更新最新的据到文本中~改户文本的缺省户户今天的日期~等您您从数框框 等。 户求户户和中止 户束的事件有,户求户户窗体两个(QueryClose)和中止(Terminate)。户求户户事件首先户生~且户取消的机并您会(不户户户户会窗体)~中止事件是最户的不能取消。并 因此~事件的户序是,初始化(Initialize)—……—户求户户(QueryClose)—中止(Terminate)。 激活用户窗体 如果不户而只是户藏~然后再户示~初始化事件不再户行。但是~激活您卸窗体它它会运(Activate)事件户生。用户每将会当窗体次户得焦点户~都户激活事件。在每次户示户~户事件也户生。如果有同户可户~那户在户些之户切户户~会触窗体会您几个窗体当您窗体 激活事件也被户。会触 户的事件参数 和Excel的事件一户~一些事件也户有~户更多的户于户户事件和户什户户事件的信息。例如窗体参数您怎触会触~UserForm_KeyDown事件告户按下了按户。在将您哪个当您VBE中使用代户口户部的下拉菜户户件一事件户程户~户户程自户户窗个会 它参数的所有户置合适的户。 一些是只户的~而一些户可户。例如~户生在用户户户前的参数另参数写窗体Userform_QueryClose事件~户有一取消个(Cancel)参数~在户户程中户置Cancel=True将并窗体会忽略户事件~且户不被户户。 户户1,如何在用户户户户户据,窗体数 有户两窗体数主要的在户户户据的方式,直接到户户户据从窗体窗体数(户意味着户户同户都被户在存中两个窗体装内)~或者先一将个窗体数个从另个窗体数中的据存户在某地方~然后再一中户用户些据。 可以或者是“从数窗体从窗体数数窗体卸当您另个源据”或者是“目户”中户户据~但必户在“源据”被户前户行。注意~指定一窗体窗体中的控件户~必户加上户的名字~例如, ‘********************** txtName.Value = frmTheOtherForm.txtName.Value‘********************** 直接到户户据户一的初始化事件从窗体窗体数会触另窗体(除非户可户窗体)~因户在引用户中的控件的性。如果户初始化事您窗体属 件户程包含有户示的代户~或者户用其的子户程~户户一窗体它将触当窗体系列的代户~户致户于户户~因此~建户户户相户户的使用户户方式。相比户而言~据存户在户量中更活和将数会灵数便于控制。据能被存户在公共户量中、户元格中(当户户文件户能被保存)、或工作表命名区域中。 下面的户合示例中包含有户户方式户户据的例子。两数 户户2,如何到我的中的某户控件,找窗体 您窗体并几能在中所包含的控件之户户行循户~户户那些合适户型的控件~在户些控件中户用相户的代户。可用如下户方式户行户理,使用TypeName函、数TypeOf运算符、或者控件名字。 TypeName() TypeName函数个框返回一字符串~例如~文本户”TextBox”~命令按户户”CommandButton”等等。控件的户型名一称与般控件的缺省名或户户相同~但不是字。例如~添加一新的文本到的中~缺省户置命名户数当您个框您窗体TextBox1。TypeOf TypeOf是定户象户型的好的方式。引用了户象户之后~能直接确很它您找返回户户象的户型而不是字符串。能通户户象户户器到户和一个框户象的户型。例如~文本的户型是MsForms.Textbox。 TypeOf主要的户户在于使的代户更易户户。户户户户模户户能您当您并捕户户型~且TypeOf支持智能户户户始户入“——If TypeOf ctl Is”~接着您将会个户得一户有所有可用的户户的下拉列表。 “If TypeOf…Is…Then”是If户句的一户特殊的户句~其介户在VBA帮档助文中的If户句中。 控件名字 如果按户一的户户命名了的控件~能使用名您您您称(Name)属来它并运运性户户户~能用一些技户。户用Left函~可以数灵非常活的户户一户子文本~例如~在中有框窗体10个框称文本~其名分户户txtTeamName、txtTeamNumber、txtMember1、txtMember2、……、txtMember8~能使用户户方法户户您并清空名字中所有以”txtMember”户户的文本。框 例子 在下面的例子中有三个作用相同的If户句(假户的文本名字都是以”您框txt”户户), ‘********************** Dim ctl As Control For Each ctl In Me.Controls If TypeOf ctl Is MSForms.Textbox Then '或者 If TypeName(ctl) = "TextBox" Then '或者 If Left(ctl.Name, 3) = "txt" Then '户文本户行操作框 ctl.Text = "Hello" End If Next ctl ‘********************** 下面的户合示例中也有一例子。个 户户3,如何户取据到列表中,数框 您框数可以通户下面所介户的三户方式户列表户取据。 RowSource属性 您将框与个区与框区将会即框能列表直接工作表上的一户元格域相户接~户工作表中的列表相同。在户域中的任何户化立使列表相户户化~但在列表中的据是只户的~不能通户改户列表中的户框数您框来内目改户工作表中的容。Note that the parameter for RowSource is a string and not a range: 注意~RowSource参数个个区是一字符串~而不是一户元格域, ‘********************** lstNames.RowSource = Range("Names").Address‘********************** List属性 / Column属性 您能使用List属性和Column属来两个属性户置列表户目~户性除了方向不同外~户户上是相同的。List属性的户法户,List(行~列)~Column属性的户法户,Column(column,row)。能户制整户到列表中~或者只是在列表中户置户的户您个数框框个目。‘********************** lstNames.List = Range("Names").Value ‘********************** AddItem方法 AddItem方法在列表中添加一行~且能放置一户在新行的第一列中。在多列列表中~必户使用框并您个框您List属性或Column属性放置户在剩下的列中。 ‘********************** With lstNames .Additem .List(0, 0) = "John" .List(0, 1) = "Smith" End With ‘********************** 在下面的户合示例中~由上述三个属性或方法的例子。 户户4,如何户循户户建户度,条 户建户度的一户户的方法是户建户有户户条个两个(例如~分户命名户lblBackground和lblProgressBar的户户两个)的。使窗体lblBackground户户户建的户度一户户~户置与您条lblProgressBar户户的户度户(Width)从0户始~保并确lblProgressBar户户在lblBackground户户之上。接着~行循户户当您运增加lblProgressBar户户的户度。 ‘********************** 'p户已户户行的循户所占的比例~例如0.6 Me.lblProgressBar.Width = p * Me.lblBackground.Width‘********************** 在下面的户合示例中~有一户户的户度例子。个条 户合示例 下面的Excel文是一档个窗体窗体演示用户基户知户的完整示例。户用户完整示例.xls。点户户户户文件 By fanjy in 2006-7-30
本文档为【ExcelVBA用户窗体编程基础】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_037433
暂无简介~
格式:doc
大小:29KB
软件:Word
页数:11
分类:生活休闲
上传时间:2017-10-17
浏览量:21