文档库 最新最全的文档下载
当前位置:文档库 › Excel VBA用户窗体编程基础

Excel VBA用户窗体编程基础

Excel VBA用户窗体编程基础
Excel VBA用户窗体编程基础

Excel VBA用户窗体编程基础

本文详细介绍了用户窗体的基本概念及常用技术。

概述

当使用MsgBox函数和InputBox函数不能满足与用户交互的需求时,可以使用用户窗体来自定义对话框。能够使用用户窗体来显示所输入的数据,甚至能够使用用户窗体创建一个完整的用户界面,而不会让用户接触到电子表格本身。

您在Windows对话框中所看到的大多数控件都能在用户窗体中实现——命令按钮,选项按钮,复选框,文本框,组合框——加上一些其它不常用的控件,像图像、日历,等等。

本文介绍了用户窗体的基本概念,并介绍了使用用户窗体的常用技术。其中,也讲解了一些最通用的思路。在文章中列举了一个包含所有过程的完整的示例文件,以及实现这些过程的代码,让您能在实践中看到所有工作的基本原理和方法。

本文包含以下内容:

基本的用户窗体操作

用户窗体和控件的属性

一个用户窗体的生命周期

用户窗体和控件的事件

问题1:如何在用户窗体间传递数据?

问题2:如何找到我的窗体中的某类控件?

问题3:如何获取数据到列表框中?

问题4:如何为循环创建进度条?

基本的用户窗体操作

创建一个用户窗体。打开VBE编辑器(选择菜单“工具——宏——Visual Basic编辑器”

或按Alt+F11组合键),选择菜单“插入——用户窗体”,或者在工程窗口中单击右键,从弹出的快捷菜单中选择“插入——用户窗体”,即可创建一个用户窗体。

添加控件。当创建了一个用户窗体后,将会显示一个名为“控件工具箱”的浮动工具箱

(如果没有该工具箱的话,可以从视图菜单中找到它),其中显示了最常用的控件类型。

单击想要的控件,拖动它到用户窗体中。

更多的控件。有一些更多的可用的控件,可以在控件工具箱中单击右键,从中选择“附

加控件”,能够添加日历、电子表格、图形,等等。

添加事件程序。事件允许当用户对窗体和控件进行操作时作出相应的反应,事件程序要

放置在用户窗体模块中,能够通过双击用户窗体或控件来打开代码模块窗口,或者在用户窗体或控件中单击右键,从快捷菜单中选择“查看代码”来打开代码模块窗口,或者

在工程窗口中的用户窗体图标上单击右键后选择“查看代码”来打开代码模块窗口。然后,在代码模块窗口中,对用户窗体或控件添加相应的事件程序代码。

显示用户窗体。打开用户窗体模块,按F5键可以运行宏程序,或者单击工具栏中的运

行按钮,将显示用户窗体。注意,在用户窗体模块中按F5键并不会运行光标所在的子过程,而是运行用户窗体自身。

调试。和在宏程序中一样,按F8键允许您逐语句运行代码。

用户窗体和控件的属性

用户窗体和控件都有属性(如尺寸、位置,等等),能够在设置用户窗体时改变这些属性,并且它们中的大多数属性也能够在运行时通过代码来改变。在设置用户窗体时所选择的值是缺省值,在运行时所作的变化仅当用户窗体被装载时有效。

两个最重要的属性是Name属性和Value属性:

Name属性可用于指定某个控件。能够通过控件的索引号指定控件,但这样会难于理解

和调试,因此,使用名称是更可取的。

Value属性是所使用的实际输入或者输出的数据。在不同的控件中,该属性值稍有区别。

例如,选项按钮控件和复选框控件的Value属性值为True/False,而文本框控件的Va lue值则是该文本框所包含的文本。Value属性既可用于输入,也可用于输出。

例如:

txtFirstName.Text = Range("A1").Value

Range("B1").Value = optVegetarian.Value

一个好习惯

给用户窗体和控件起一个具有描述性且分类清楚的名字。将会发现在每类控件名前加一个前缀是很有帮助的,例如,frm代表用户窗体,opt代表选项按钮,等等。这样将会使代码更易阅读,并且也会允许使用一些技术,否则代码将会很复杂。

指定控件和用户窗体,以及Me关键字

当在用户窗体代码模块中指定窗体中的控件时,可以通过名字指定他们,例如txtFirstNam e.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中,如果没有事件,能做一些操作,但是在用户窗体中,如果没有事件的话,用户窗体几乎没什么作用。

最常用的用户窗体事件包括窗体初始化(Initialize)、窗体激活(Activate)、窗体请求

关闭(QueryClose)、以及单击窗体(Click)。

用户窗体中控件的常用事件包括更新后(AfterUpdate)、变化(Change)、单击(Click)、

输入(Enter)、以及退出(Exit)。

为了插入某对象的事件过程,可以在该对象上单击右键,在快捷菜单中选择”查看代码”,将会自动创建一个该控件标准的事件过程。如果想创建不同的事件过程,可以从VBE窗口顶部右侧的下拉列表中选择想创建的事件过程。还有一个方法是,可以先进入用户窗体代码窗口,在代码窗口顶部的左侧的下拉列表中选择对象,在右侧的下拉列表中选择相应的事件。

用户窗体初始化

最重要的用户窗体事件是初始化(Initialize)事件。初始化是发生在用户窗体中的第一件事情——只要用户窗体开始装载,就会触发初始化事件。

在这里,可以初始化变量和控件。例如,能够从电子表格中更新最新的数据到文本框中,改变文本框的缺省值为今天的日期,等等。

请求关闭和中止

结束用户窗体的事件有两个:请求关闭(QueryClose)和中止(Terminate)。请求关闭事件首先发生,并且给您取消的机会(不会关闭窗体);中止事件是最终的并不能取消。

因此,事件的顺序是:初始化(Initialize)—……—请求关闭(QueryClose)—中止(Termin ate)。

激活用户窗体

如果您不卸载用户窗体而只是隐藏它,然后再显示它,初始化事件不会再运行。但是,激活(Activate)事件将会发生。当用户窗体每次获得焦点时,都会触发激活事件。在每次显示用户窗体时,该事件也会发生。如果有几个用户窗体同时可见,那么当在这些窗体之间切换时,激活事件也会被触发。

带参数的事件

和Excel的事件一样,一些窗体事件也带有参数,提供更多的关于怎样触发事件和为什么会触发事件的信息。例如,UserForm_KeyDown事件将告诉按下了哪个按键。当在VBE中使用

代码窗口顶部的下拉菜单创件一个事件过程时,该过程会自动为它的所有参数设置合适的值。

一些参数是只读的,而另一些参数则可读写。例如,发生在用户窗体关闭前的Userform_Qu eryClose事件,带有一个取消(Cancel)参数,在该过程中设置Cancel=True将忽略该事件,并且该窗体不会被关闭。

问题1:如何在用户窗体间传递数据?

有两种主要的在用户窗体间传递数据的方式:直接从窗体到窗体传递数据(这意味着这两个窗体应同时都被装载在内存中);或者先将一个窗体中的数据存储在某个地方,然后再从另一个窗体中调用这些数据。

可以或者是从“源数据”窗体或者是从“目标”窗体中传递数据,但必须在“源数据”窗体被卸载前进行。注意,当您指定另一个用户窗体中的控件时,必须加上该窗体的名字,例如:

txtName.Value = frmTheOtherForm.txtName.Value

直接从窗体到窗体传递数据会触发另一窗体的初始化事件(除非该窗体可见),因为您在引用该窗体中的控件的属性。如果该初始化事件过程包含有显示窗体的代码,或者调用其它的子过程,这将触发一系列的代码,导致难于调试,因此,建议仅对相当简单的窗体使用这种方式。

相比较而言,将数据存储在变量中会更灵活和便于控制。数据能被存储在公共变量中、单元格中(当关闭文件时能被保存)、或工作表命名区域中。

问题2:如何找到我的窗体中的某类控件?

能够在用户窗体中所包含的控件之间进行循环,选择那些合适类型的控件,并在这些控件中应用相应的代码。可用如下几种方式进行处理:使用TypeName函数、TypeOf运算符、或者控件名字。

TypeName()

TypeName函数返回一个字符串,例如,文本框为“TextBox”,命令按钮为“CommandButto n”等等。控件的类型名称一般与控件的缺省名或标题相同,但不是数字。例如,当添加一个新的文本框到用户窗体中,缺省设置命名为TextBox1。

TypeOf

TypeOf是确定对象类型的很好的方式。引用了对象库之后,它能直接返回该对象的类型而不是字符串。能通过对象浏览器找到库和一个对象的类型。例如,文本框的类型是MsForm s.Textbox。

TypeOf主要的优势在于使代码更易调试。当试图编译模块时能捕获类型,并且TypeOf支持智能识别——开始输入“If TypeOf ctl Is”,接着将会获得一个带有所有可用的选择的下拉列表。

“If TypeOf…Is…Then”是If语句的一类特殊的语句,其介绍在VBA帮助文档中的If语句中。

控件名字

如果按统一的规则命名了控件,则能使用名称(Name)属性来识别它们,并能运用一些技术。运用Left函数,可以非常灵活的识别一组子文本框,例如,在用户窗体中有10个文本框,其名称分别为txtTeamName、txtTeamNumber、txtMember1、txtMember2、……、txtMember 8,能使用这种方法识别并清空名字中所有以”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(https://www.wendangku.net/doc/ef13202875.html,, 3) = "txt" Then

'对文本框进行操作

ctl.Text = "Hello"

End If

Next ctl

问题3:如何获取数据到列表框中?

您可以通过下面所介绍的三种方式为列表框获取数据。

RowSource属性

能将列表框直接与工作表上的一个单元格区域相链接,这与工作表中的列表框相同。在该区域中的任何变化将会立即使列表框相应变化,但在列表框中的数据是只读的,不能通过改变列表框中的项目来改变工作表中的内容。

注意,RowSource参数是一个字符串,而不是一个单元格区域:

lstNames.RowSource = Range("Names").Address

List属性 / Column属性

能使用List属性和Column属性来设置列表项目,这两个属性除了方向不同外,实质上是相同的。List属性的语法为:List(行,列);Column属性的语法为:Column(列,行)。能复制整个数组到列表框中,或者只是在列表框中设置单个的项目。

lstNames.List = Range("Names").Value

AddItem方法

AddItem方法在列表框中添加一行,并且能放置一个值在新行的第一列中。在多列列表框中,必须使用List属性或Column属性放置值在剩下的列中。

With lstNames

.Additem

.List(0, 0) = "John"

.List(0, 1) = "Smith"

End With

问题4:如何为循环创建进度条?

创建进度条的一个简单的方法是创建带有两个标签(例如,分别命名为lblBackground和lb lProgressBar的两个标签)的用户窗体。使lblBackground标签与创建的进度条一样宽,设置lblProgressBar标签的宽度值(Width)从0开始,并确保lblProgressBar标签在lblBac kground标签之上。接着,当运行循环时增加lblProgressBar标签的宽度。

'p为已经进行的循环所占的比例,例如0.6

Me.lblProgressBar.Width = p * Me.lblBackground.Width

ExcelVBA用户窗体编程基础

ExcelVBA用户窗体编程基础 概述 当使用MsgBox函数和InputBox函数不能满足与用户交互的需求时,您能使用用户窗体来自定义对话框。您能使用用户窗体来显示所输入的数据,您甚至能使用用户窗体创建一个完整的用户界面,而不会让用户接触到电子表格本身。 您在Windows对话框中所看到的大多数控件都能在用户窗体中实现——命令按钮,选项按钮,复选框,文本框,组合框——加上一些其它不常用的控件像图像,日历,等等。 本文介绍了用户窗体的基本概念,并介绍了使用用户窗体的常用技术。其中,也讲解了一些最通用的思路。在文章中列举了一个包含所有过程的完整的示例文件,以及实现这些过程的代码,让您能在实践中看到所有工作的基本原理和方法。 本文包含以下内容: ● 基本的用户窗体操作 ● 用户窗体和控件的属性 ● 一个用户窗体的生命周期 ● 用户窗体和控件的事件 ● 问题1:如何在用户窗体间传递数据? ● 问题2:如何找到我的窗体中的某类控件? ● 问题3:如何获取数据到列表框中? ● 问题4:如何为循环创建进度条? ● 一个完整的用户窗体综合示例 基本的用户窗体操作 ?创建一个窗体。打开VBE编辑器(选择菜单“工具——宏——Visual Basic编辑器”或按Alt+F11组合键),选择菜单“插入——用户窗体”,或者在工程窗口中单击右键,从弹出的快捷菜单中选择“插入——用户窗体”,即可创建一个窗体。 ?添加控件。当你创建了一个窗体后,将会显示一个名为“控件工具箱”的浮动工具箱(如果没有该工具箱的话,您可以从视图菜单中找到它),其中显示了最普遍的控件类型。单击您想要的控件,拖动它到您的用户窗体中。 ?更多的控件。有一些更多的可用的控件,您可以在控件工具箱中单击右键,从中选择“附加控件”,您能添加日历、电子表

第6章 控件与用户窗体代码【超实用VBA】

第6章控件与用户窗体 范例67 文本框只能输入数值 Private Sub TextBox1_KeyPress(ByVal KeyANSI As MSForms.ReturnInteger) With TextBox1 Select Case KeyANSI Case Asc("0") To Asc("9") Case Asc("-") If InStr(1, .Text, "-") > 0 Or .SelStart > 0 Then KeyANSI = 0 End If Case Asc(".") If InStr(1, .Text, ".") > 0 Then KeyANSI = 0 Case Else KeyANSI = 0 End Select End With End Sub Private Sub TextBox1_Change() Dim i As Integer Dim Str As String With TextBox1 For i = 1 To Len(.Text) Str = Mid(.Text, i, 1) Select Case Str Case ".", "-", "0" To "9" Case Else .Text = Replace(.Text, Str, "") End Select Next End With End Sub

范例68 限制文本框的输入长度 Private Sub TextBox1_Change() TextBox1.MaxLength = 6 End Sub 范例69 验证文本框输入的数据 Private Sub CommandButton1_Click() With TextBox1 If (Len(Trim(.Text))) = 15 Or (Len(Trim(.Text))) = 18 Then Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) = .Text Else MsgBox "身份证号码错误,请重新输入!" End If .Text = "" .SetFocus End With End Sub 范例70 文本框回车自动输入 Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Dim r As Integer r = Cells(Rows.Count, 1).End(xlUp).Row With TextBox1 If Len(Trim(.Text)) > 0 And KeyCode = vbKeyReturn Then Cells(r + 1, 1) = .Text .Text = "" End If End With End Sub 范例71 文本框的自动换行 Private Sub UserForm_Initialize() With TextBox1 .WordWrap = True

窗体设计基础1

第1章设计简单应用程序随着计算机应用的普及和Windows操作系统的出现,大量的应用程序希望用户界面友好,操作简捷。Windows应用程序的主要特点是: (1)使用图形用户界面(GUI,Graphical User Interface); (2)使用面向对象方法编程; (3)基于消息驱动程序。 微软的.NET框架提供了编写Windows应用程序的全面支持。 Windows应用程序设计主要完成两部分工作:界面设计和程序功能设计。 https://www.wendangku.net/doc/ef13202875.html,框架 .NET是微软公司2000年推出的面向互联网时代构筑的新一代平台,微软公司开发了一整套基于.NET框架(.NET Framework)设计的工具组件,集成到Visual https://www.wendangku.net/doc/ef13202875.html,(简称https://www.wendangku.net/doc/ef13202875.html,)开发环境中,用于开发基于.NET平台的应用程序。 .NET框架有两个主要的组件:公共语言运行时(CLR,Common Language Runtime)和.NET框架类库(FCL,Framework Class Library)。 公共语言运行时 CLR是一个公共语言运行库,通常直译为公共语言运行时。 CLR支持多种语言,提供了各种语言的互操作性。 CLR提供了公共类型系统(CTS,Common Type System),对数据类型提供了定义、管理和使用的严格说明;提供了代码必须遵守公共语言规范(CLS,Common Language Standard)。 CLR运行的代码称为托管代码,在CLR控制之外的代码称为非托管代码。 C++,ISO/ANSI标准,非托管的C++设计 C++/CLI标准,为CLR托管程序而设计。CLI(Common Language Infrastructure)https://www.wendangku.net/doc/ef13202875.html,提供了两种代码的互操作,允许程序员在项目中的不同程序模块之间,甚至同一个文件中混合使用托管(C++/CLI)代码和非托管(C++)代码。不同语言编写的组件也可以进行交互。这体现了https://www.wendangku.net/doc/ef13202875.html,的强大。 .NET框架类库 .NET框架类库FCL是一个与公共运行时紧密集成、可重用的类的集合。包括类、接口、结构和枚举 .NET框架类库使用CTS数据和CLS规范 .NET框架类库包含了将近100个命名空间

使用窗体控件

第2章使用窗体控件 课堂练习:为控件创建事件处理程序 5)传递给这个事件处理程序的第二个参数(e)的目的是什么? 答:参数e包含事件数据。它是一个EventArgs 对象(实际不包含事件数据的基类),或者是一个派生类(像MouseEventArgs)的实例。要查看派生类的完整列表,请在Visual Studio .NET帮助文档中使用短语“EventArgs 类”进行查找,然后点击链接转到“派生类”。 ●为Click 事件创建一个事件处理程序。 3)上面的双击动作为什么创建了一个Click 事件处理程序? 答:当在设计视图中双击一个控件时,IDE会自动为默认事件创建一个事件处理程序。课堂练习:创建和使用ToolBar控件 8)为什么不能向ToolBar 按钮添加图像呢? 答:ToolBar 控件将ImageList 控件作为图像源。使用ToolBar 控件的ImageList 属性指定Toolbar 将从哪个ImageList 控件获取图像。 13)运行应用程序。单击工具栏按钮时有事情发生吗?必须处理什么事件以响应单击ToolBar按钮? 答:ToolBar 的ButtonClick事件用来处理ToolBar按钮的单击。ToolBarButtonClickEventArgs 用来确定单击了哪个按钮。 课堂练习:在运行时添加和移除控件 ●添加新控件 6)为什么decimalCheckBox 出现在GroupBox1控件的左上角? 答:控件位置属性的默认坐标X和Y的值均为零。 课堂练习:在运行时更新菜单 ●使用另一个MainMenu 9)什么时候能在一个应用程序中使用多个MainMenu 控件? 答:在应用程序的上下文改变或者应用程序有多种状态时,使用(显示)多个MainMenu 对象会很有帮助。 ●将一个ContextMenu 分配给一个控件。 5)如何找出哪个控件与ContextMenu 有关联? 答:ContextMenu.SourceControl 属性获取显示快捷方式菜单的控件。 ●找出与ContextMenu关联的控件

C#中用户控件与窗体间的消息传递

C#中用户控件与窗体间的消息传递 如果在c#中实现用户定义控件内的事件挂勾到调用的窗体事件中 我们都知道在https://www.wendangku.net/doc/ef13202875.html,开发中,如果使用用户定义控件可以有效的进行程序的模块化。其实在.net 的winform中也是可以使用的。 细节如下: 1、新建应用程序windowsapplication1。 2、添加新的用户控件userlogin。(如图user) 3、定义用户属性 //定义属性 public string username { get{return username;} set{username=value;} } public string password { get{return password;} set{password=value;} } 4、定义委托 //定义委托 public delegate void btnokclickeventhander(object sender,eventargs e); public delegate void btncancelclickeventhander(object sender,eventargs e); 5、定义事件 //定义事件 public event btnokclickeventhander btnokclick; public event btncancelclickeventhander btncancelclick 6、事件实现 private void textboxuid_textchanged(object sender, system.eventargs e) { username=this.textboxuid.text; } private void textboxpwd_textchanged(object sender, system.eventargs e) { password=this.textboxpwd.text; } private void buttonok_click(object sender, system.eventargs e) { if (btnokclick!=null)

Windows窗体设计概念及原则

目录 C#控件前缀名大全 (1) 2.Windows窗体设计概念及原则 (7) C#控件前缀名大全 标准控件 1 btn Button 2 chk CheckBox 3 ckl CheckedListBox 4 cmb ComboBox 5 dtp DateTimePicker 6 lbl Label 7 llb LinkLabel 8 lst ListBox 9 lvw ListView 10 mtx MaskedTextBox 11 cdr MonthCalendar 12 icn NotifyIcon 13 nud NumeircUpDown 14 pic PictureBox 15 prg ProgressBar 16 rdo RadioButton 17 rtx RichTextBox

18 txt TextBox 19 tip ToolTip 20 tvw TreeView 21 wbs WebBrowser 容器控件 1 flp FlowLayoutPanel 2 grp GroupBox 3 pnl Panel 4 spl SplitContainer 5 tab TabControl 6 tlp TableLayoutPanel 菜单和工具栏 1 cms ContextMenuStrip 2 mns MenuStrip 3 ssr StatusStrip 4 tsr ToolStrip 5 tsc ToolStripContainer 6 cmu ContextMenu 数据 1 dts DataSet 2 dgv DataGridView 3 bds BindingSource 4 bdn BindingNavigator 5 rpv ReportViewer

第二章 窗体与基本控件

第二章窗体与基本控件 教学内容: 一、窗体 窗体的属性、事件、方法及应用举例 二、基本控件以及对控件的格式化 命令按钮、标签、文本框等基本控件属性、事件与方法,基本控件的添加/删除、调整控件的大小与位置、窗体与控件的布局调整 三、简单语句 Print方法、人机对话函数(InputBox,MsgBox,Cls,End,Stop,Rem语句)、基本格式、功能、举例说明。教学要求: 了解:控件的格式化 掌握:常用控件(窗体、文本框、标签、命令按钮)的常用属性、事件和方法、Print方法、Inputbox、Msgbox、Cls、End语句的使用方法 §2.1 窗体 1.窗体的基本属性 Name 对象的名称 指定窗体的名称,在程序代码中用这个名称引用该窗体。 第一个窗体的名称缺省值为form1,通常要给name属性设置一个有实际意义的名称,便于识别。 Caption 对象的标题 设置窗体标题栏显示的文本。 Height 对象的高度 Width 对象的宽度 设置窗体的高度和宽度。单位为Twip。 1Twip=1/20点=1/1440英寸=1/567cm Enabled 对象的激活或禁止 用来设置窗体是否响应鼠标或键盘事件。缺省时为True,窗体能够对用户产生的事件作出反映。 Visible 对象的可见性 设置窗体是否显示。True(窗体可见),False(运行时,窗体及其上面的对象都将被隐藏) Top 对象的顶边距离 Left 对象的左边距离 Backcolor 设置窗体的背景颜色; Forecolor 设置窗体的前景颜色。 Font 设置窗体上字体的样式,大小,字形等。 Picture 设置在窗体中显示的图片。 注意:要在程序中设置该属性的值,需要使用LoadPicture函数。 WindowStare属性设置窗体运行时的大小状态。有三个可选值: 0-Normal 窗体大小由Height和Width属性决定,此值为缺省值; 1-Minimized 窗体最小化成图标; 2-Maximized 窗体最大化,充满整个屏幕。 2.窗体的事件和方法 事件: Click(单击)事件:单击鼠标左键时触发 DblClick(双击)事件:双击窗体时触发 Load(装入)事件:窗体被装入工作区时触发 方法: Print 格式:[对象名.] Print [表达式列表][;|,] 功能:在对象上输出信息 例如:Form1.Print “VB”;”程序设计” Cls 格式:[对象名.] Cls

设计各种形状的窗体界面

用https://www.wendangku.net/doc/ef13202875.html,设计各种形状的窗体界面一 文章来源:互联网 窗体是程序设计最常见,最普通,也是最容易受到程序员忽视的编程对象。一般来说,在Visual Basic .Net针对窗体的编程是不需要人为介入的,因为可视化编程工具Visual Studio .Net已经按照窗体的缺省状态实现了。但是在最近遇到的应用程序中。我们发现越来越多的应用程序中使用到各种不同规则的窗体,这些不同规则的窗体给应用程序带来异常的情趣和不同平常的效果的同时,也促使使用者思考这样一个问题,如何创建这些窗体?在Visual Basic .Net中提供了一种简单、直接创建不规则窗体的方法,本文的主要内容就是探讨一下这些方法具体的实现过程。下面就来详细介绍在Visual Basic .Net 中实现五种不同规格窗体的方法,即:椭圆形、扇形、圆形、环形和三角形。掌握了这五种不同形状窗体的实现方法后,我想对于其他规则的窗体就不应该有什么问题了。 Visual Basic .Net中创建、使用MDI窗体也是本文的重要内容之一,MDI是Multi Document Interface的简称,即:多文档界面,MDI最早出现于Windows 2.0中,最先使用到MDI的应用程序是E xcel电子表格。为了方便使用者同时能够操作多份电子表格,Excel 就采用了MDI来解决这个问题。到了Windows3.1中,MDI在应用程序中得到了更大范围的应用。其中Windows 3.1中的程序管理器和文件管理器都采用了MDI。目前MDI在应用程序中依然被广泛采用。

下面就首先来介绍一下Visual Basic .Net创建不规则窗体的相关知 识和具体实现方法。 一.简介Visual Basic .Net中定制不规则窗体时使用的类库:Visual Basic .Net中定制不规则窗体主要使用到Region类和G raphicsPath类,其中以GraphicsPath类最为重要。GraphicsPath类和Region类分别位于.Net FrameWork SDK中的"System.Drawing.Drawi ng2D"命名空间和"System.Drawing"命名空间。在Visual Basic .Net 中具体实现各种不规则窗体的过程中,GraphicsPath主要作用是根据程序员的要求,通过GraphicsPath中提供的方法绘制不同规则的形状。Region的主要作用是依靠GraphicsPath实例来初始化Region对象,从而形成不规则窗体。 其具体的实现过程是,首先通过GraphicsPath类构造函数创建GraphicsPath实例,然后通过GraphicsPath中提供的方法按照程序员的要求绘制形状,最后以GraphicsPath实例来初始化Region对象。完成不规则窗体。可见了解、掌握GraphicsPath类对于理解本文介绍的实现方法是非常必要的。表01和表02分别是GraphicsPath类的常用方法和常用属性及其说明:

向用户窗体中添加控件

若要向用户窗体中添加控件,请在“工具箱”中查找要添加的控件,将该控件拖到窗体上,然后拖动控件上的调整柄,直至控件的外边框成为所需的大小和形状。 注意如果将控件(或若干“成组”的控件)从窗体拖回到“工具箱”,将创建该控件的一个模板,该模板可被重新使用。对于实现应用程序的标准界面,这是非常有用的功能。 向窗体添加了控件之后,可用 Visual Basic 编辑器中“格式”菜单上的命令调整控件的对齐方式和间距。 上页:Excel VBA教程:向文档中添加控件下页:Excel VBA教程:应用程序对象事件 Excel VBA Excel VBA教程:应用程序对象事件Excel VBA教程:图表对象事件 Excel VBA教程:控件和对话框事件Excel VBA教程:在某一 Microsoft Office 应用程序中控制其他 Microsoft Office 应 用程序 Excel VBA教程:创建自定义对话框Excel VBA教程:新建工作簿 Excel VBA教程:创建“用户窗体”Excel VBA教程:显示自定义对话框 Excel VBA教程:获取有关 Macintosh 关键 字的帮助 Excel VBA教程:在单元格区域中循环Excel VBA教程:如何引用单元格和区域Excel VBA教程:初始化控件属性Excel VBA教程:打开工作簿Excel VBA教程:QueryTable对象事件 Excel VBA教程:引用工作表上的所有单元格Excel VBA教程:用 A1 样式记号引用单元格 和单元格区域 Excel VBA教程:用编号引用单元格Excel VBA教程:相对于其他单元格来引用单 元格 Excel VBA教程:用 Range对象引用单元格Excel VBA教程:用快捷记号引用单元格

winfrom窗体和控件布局

第4章 1.回顾 桌面应用程序中的单选按钮的使用 可以使用分组框对控件进行分组 用PictureBox可显示图片 Timer控件是用于计时的计时器控件,可以重复执行Tick事件 滚动条可滚动取值,用进度条可记录某一过程的进度情况 用选项卡控件可对窗体上的控件进行分类 2.本章内容 了解SDI、MDI窗体 掌握TreeView控件 3.本章重点 了解SDI、MDI窗体 掌握TreeView控件 4.本章讲课思路 什么单文档、什么是多文档 多文档窗体的作用 如何创建多文档窗体 treeview控件 节点集和节点对象 5.知识点讲解 01.知识点一:MDI窗体 a)讲解思路: 1)什么是窗体,应用程序的用户界面,多文档窗体有是什么样的窗体? 2)SDI、MDI窗体的区别 3)如何创建多文档窗体 4)MDI主窗体的属性、方法和事件 5)操作MDI子窗体 6) b)讲解要点:

如何创建多文档窗体 MDI主窗体的属性、方法和事件 操作MDI子窗体 c)课堂练习: 创建一个winform登录程序主窗体编译并运行 d)小结: MDI多文档窗体,就是可以在一个界面中同时对多个文档进行操作 02.知识点一:TreeView控件 a)讲解思路: 什么数树形菜单 Windows 资源管理器中左窗格所包含的目录和文件是以树型视图样式排列的 Treeview 控件的作用。 用于以节点形式显示文本或数据,这些节点按层次结构顺序排列 节点集和节点对象 节点的常用属性和方法和事件 b)讲解要点: 节点集和节点对象 节点的常用属性和方法和事件 c)课堂练习: 在主窗体中添加treeview控件 d)小结: Treeview 控件的作用。 用于以节点形式显示文本或数据,这些节点按层次结构顺序排列 节点集和节点对象 03.课堂总结 a)思路: 04.掌握多文档窗体的创建及使用 05.使用树视图显示有层次结构的数据 06.作业: 课堂作业:编写登陆主窗体。 课后作业:书上日记本练习

用户窗体的

用户窗体的基础知识用户窗体的显示方式用于以编程方式显示用户窗体的语法是下列: UserFormName.Show 若要显示名为 UserForm1 用户窗体,使用以下代码: UserForm1.Show ,您可以加载到内存用户窗体而不实际显示它。可能需要复杂的用户窗体多个要显示的秒数。因为您可以预先用户窗体加载到内存中,您可以决定何时会导致这种开销。而不显示它加载 到内存的 UserForm1,使用下面的代码: Load UserForm1 显示用户窗体,您必须使用了以前显示的显示方法。 如何暂时隐藏用户窗体如果要暂时隐藏用户窗体,使用隐藏方法。您可能希望隐藏用户窗体,如果您的应用程序涉及到用户窗体之间移动。若要隐藏用户窗体,使用下面的代码: UserForm1.Hide 如何从内存中删除用户窗体若要从内存中删除用户窗体使用卸载语句。若要卸载 UserForm1 命名的用户窗体,使用下面的代码: Unload UserForm1 如果您卸载了用户窗体与用户窗体相关联,则与在用户窗体上某个控件关联的事件过程中(渚嬪的方式 单击命令按钮),可以使用"Me"关键字而不是用户窗体的名称。若要使 用"Me"关键字卸载用户窗体,使用下面的代码: Unload Me 如何使用用户窗体事件用户窗体支持许多预定义的事件,您可以将附加 VBA 过程。该事件时则该过程,您附加到该事件的运行。由用户执行的单个操作可以启动多个事件。最经常使用的用户窗体的事件包括初始化事件、, Click 事件和终止事件。 请注意VBA 模块包含事件过程可能被称为"隐藏"用户窗体模块。在模块包含事件过程中不可见 Visual Basic 编辑器的 Microsoft 项目资源管理器窗口的模块集合。您必须双击 用户窗体可以查看用户窗体代码模块的正文。 如何捕获用户窗体事件要捕获用户窗体事件,请按照这些步骤操作: 1.在 Excel 中创建一个新的工作簿。 2.在工具菜单上指向宏,然后单击Visual Basic 编辑器。

第1章 使用窗体和控件

第1章 使用窗体和控件 为了便于程序与用户间的交互,可以在Excel中创建独立的窗体,在其中添加一些控件,这样就可以让用户像使用Excel内置对话框一样,来使用窗体。不但减少了数据输入的麻烦,而且也使操作界面更加友好。本章将介绍窗体和控件的知识。 1.1Excel中的两类窗体 为了简化输入,可以在Excel工作表中通过添加控件的方式,制作一个交互性极强的表单系统。如图1-1所示的工作表也许您以前曾经看到过,它就是一个工作表窗体,其中放置了一些控件,使得输入与选择数据变得非常简单。这非常适合于开发人员给客户提供的最终Excel应用程序。 在Excel中进行各种操作时,经常会遇到在一个弹出的对话框中选择某个选项或输入某些内容而得到设置结果。如果希望自己定制对话框的外观及可用选项,那么就需要创建用户窗体。如图1-2所示为一个根据用户选择的选项来查询图书的一个查询窗体。 图1-1 一个工作表窗体的例子图1-2 一个用户窗体的例子本章剩下的部分将先介绍创建用户窗体的步骤和方法,然后介绍在工作表中使用控件的方法和技巧。 1.2使用InputBox和MsgBox函数代替窗体 在前几章中,我们已经多次用到了InputBox和MsgBox函数。使用这两个函数可以显

示简单的对话框。因此,如果不需要特别定制复杂的窗体,而只是获取用户的输入或返回一条信息,那么就可以使用InputBox和MsgBox函数来完成。 1.2.1InputBox InputBox函数分为两种,一种是VB程序中的InputBox函数,另一种是Excel中Appl ication对象的InputBox方法。它们都可以显示一个输入框,用于获取用户的输入信息,然后将返回结果赋值给一个变量以进行其他操作。Excel中的Application对象的InputBox方法比VB程序中的InputBox函数有更强大的功能。 VB程序中的InputBox函数的语法如下: InputBox(prompt, title, default, xpos, ypos, helpfile, contex t) InputBox函数中各参数的作用如下: prompt:显示在输入对话框中的文本(必选)。 title:显示在输入对话框标题栏中的文本(可选)。 default:显示在输入对话框的文本框中的默认值(可选)。 xpos和ypos:窗口左上角的屏幕坐标值(可选)。 helpfile:输入对话框中的帮助文件(可选)。 context:输入对话框中的帮助主题(可选)。 在使用InputBox函数时,通常只会使用前3个参数或者只使用前两个参数,得到如下的简化版本: InputBox(prompt, title, default) 例如,下面的代码将根据用户输入的内容返回一条信息: Sub GetInfo() Dim Ans As String Ans = InputBox("请输入", "输入信息") MsgBox "您输入的信息是:" & Ans End Sub 运行上面的代码,将显示如图1-3所示的对话框。当用户输入一个内容并单击【确定】按钮,将在一个对话框中显示所输入的内容。 图1-3 使用VB的InputBox函数打开的输入对话框 如果在上个例子中用户未输入任何内容或单击【取消】按钮,那么InputBox函数都将返回一个空字符串。为了强制要求用户输入内容,可以设置一个Do While循环,只要输

主界面设计

(二)主界面窗体设计 “主界面”窗体的功能是实现与其他窗体和报表的连接,系统用户可以根据自己的需要,单击相应的按钮选择操作。下面介绍该窗体的创建步骤。 1.窗体界面设计 新建一个窗体,命名为“主界面”。按照图4-2所示,设计“主界面”窗体中的各个控件,控件的主要属性如表4-2所示。 图4-2 “主界面”窗体

(三)用户管理窗体设计 “用户管理”窗体可以对用户名和密码进行添加、删除或更改等操作,下面介绍该窗体的创建步骤。 1.窗体界面设计 使用向导创建一个新的窗体,用户管理窗体的控件属性如表4-3所示,界面如图4-3所示。 图4-3 用户管理窗体设计视图

2.添加按钮事件代码 利用命令按钮向导为“编辑用户”、“添加用户”、“删除”、“撤销修改”和“保存修改”按钮添加处理函数,这些命令按钮实现对用户信息进行操作,实现过程如下。 (1)窗体初始化。 初始化窗体,设置窗体加载时命令按钮是否可用和文本框的状态等,代码如下: Option Compare Database Public flag As Integer Private Sub Form_Load() '设置窗体加载时的属性 cmdedit.Enabled = True cmdadd.Enabled = True cmddel.Enabled = False cmdsave.Enabled = False cmdcancle.Enabled = False cmdfirst.Enabled = True cmdbefore.Enabled = True cmdnext.Enabled = True cmdlast.Enabled = True flag = 0 txtpassword = "" Form.AllowEdits = True 用户名.Locked = True 密码.Locked = True 备注.Locked = True Form.AllowDeletions = False Form.AllowAdditions = False Form.RecordLocks = 0 End Sub (2)响应“编辑用户”按钮单击事件代码。 单击“编辑用户”按钮,判断操作人员是否有权限编辑已经存在的用户信息,若密码正确可对用户修改,否则系统显示错误的提示信息,并要求用户重新输入密码,代码如下:Private Sub cmdedit_Click() '通过密码确认判断使用者是否有权利编辑此用户 If txtpassword.Value <> 密码Then MsgBox "确认密码不对,无法编辑,请再次输入确认密码" '设置txtpassword内容为空,并使其获得焦点

VBA的控件及用户窗体

目录 VBA常用技巧.................................................... 第8章控件与用户窗体...................................... 技巧1.................................................................... 限制文本框的输入 技巧2........................................................ 文本框添加右键快捷菜单 技巧3................................................................ 文本框回车自动输入 技巧4................................................................ 自动选择文本框内容 技巧5................................................................ 设置文本框数据格式 技巧6............................................................ 限制文本框的输入长度 技巧7................................................................ 将光标返回文本框中 技巧8.................................................................... 文本框的自动换行 技巧9................................................................ 多个文本框数据相加 技巧10.............................................................. 控件跟随活动单元格 技巧11.......................................................................... 高亮显示按钮 技巧12...................................... 组合框和列表框添加列表项的方法12-1....................................... 使用RowSource属性添加列表项 12-2................................................. 使用List属性添加列表项 12-3........................................... 使用AddItem方法添加列表项技巧13...................................... 去除列表框数据源的重复值和空格 技巧14...................................................................... 移动列表框条目 技巧15.......................................................... 允许多项选择的列表框

实验05《窗体与控件》

实验5、窗体与控件 实验课时: 课内:2课时,课外:2课时 实验目的: 掌握用户界面设计的原则与方法,熟练使用窗体及常用控件的属性、事件和方法来处理业务。 实验内容: 项目A :界面设计之4S 店服务公告 Christopher 汽车中心开展与车辆有关的一切业务,包括新车、二手车的租售、汽车的保养和修理、零件的销售及洗车等等。本项目要做的,就是为该中心设计一个程序来显示各部门的最新通知。该项目仅包含一个窗体,最终的窗体运行时截图类似: 实验内容、具体要求及步骤为: 1. 在计算机D 或E 分区创建“你的文件夹”(类似“198009010101文立斌”) 2. 启动Visual Studio 2010,在“你的文件夹”内创建一个解决方案(项目),解决方案 (项目)名称类似“文立斌A ”,窗体名称类似“frm 文立斌A ” 3. 如以上运行时截图及下图所示,窗体顶部设计两个Label (标签)控件,其中左边的Label 图片、数据库资源请垂询894867898@https://www.wendangku.net/doc/ef13202875.html,

显示静态文字“Special Notices:”,右边的Label将用于动态显示4S店的各种通知: 4.之后,如以上运行时截图及下图所示,请在窗体上设计一个文字内容为“Hours”的 CheckBox(复选框)控件,其右边设计一个Label控件。CheckBox控件最常用的事件是CheckedChanged(选择已发生变化),最常用的属性自然是Checked(是否已选中)。 现在,请为该控件的CheckedChanged事件编写必要的代码,使得该控件已被选中时,其右边的Label控件中显示文字“Open 24 Hours – 7 days a week”,反之则不显示任何文字: 提示:检查CheckBox的Checked属性值是true还是false,并根据该属性的值设置右边Label控件的Text属性即可——不要告诉我Text属性是干什么的哦! 5.往下则设计四个PictureBox(图片框)控件,每个图片框上方各设计一个Label来指 出图像所代表的部门:Auto Sales,Service,Detail,Employeement Opportuniti: 图片来源: 图片控件图像文件名称 Auto Sales Cars.ico Service Center Wrench.ico Detail Shop Water.ico Employeement Opportuniti Mail12.ico 注意:先将这些图片文件复制到你的文件夹内,再按如下步骤设置每个PictureBox的Image(图像)属性: ①右键单击Image属性旁边的按钮 ②在系统显示的“选择资源“对话框中,选中“本地资源”复选框、单击【导入】按 钮,最后单击【确定】按钮 6.如下图所示,友好的程序设计要求为这里的四个控件都添加浮动提示文字: 如何设置哩? ①从工具箱往窗体上拖一个名为ToolTip(工具提示)的不可视组件,这个组件在后 台服务,为窗体或其控件提供浮动提示,添加该控件后,您将发现,窗体底部多了 一个不可视的组件对象: 而窗体及控件的属性中都多了一个有点另类的属性:

VBA的控件及用户窗体

目录 VBA常用技巧 ................................................................................................. 错误!未定义书签。 第8章控件与用户窗体 (4) 技巧1限制文本框的输入 (4) 技巧2文本框添加右键快捷菜单 (6) 技巧3文本框回车自动输入 (10) 技巧4自动选择文本框内容 (11) 技巧5设置文本框数据格式 (12) 技巧6限制文本框的输入长度 (14) 技巧7将光标返回文本框中 (15) 技巧8文本框的自动换行 (17) 技巧9多个文本框数据相加 (19) 技巧10控件跟随活动单元格 (20) 技巧11高亮显示按钮 (21) 技巧12组合框和列表框添加列表项的方法 (23) 12-1使用RowSource属性添加列表项 (23) 12-2使用List属性添加列表项 (24) 12-3使用AddItem方法添加列表项 (25) 技巧13去除列表框数据源的重复值和空格 (27) 技巧14移动列表框条目 (29) 技巧15允许多项选择的列表框 (32) 技巧16多列组合框和列表框的设置 (35) 16-1多列组合框和列表框添加列表项 (35) 16-2多列列表框写入工作表 (37) 技巧17输入时逐步提示信息 (39) 技巧18二级组合框 (46) 技巧19使用DTP控件输入日期 (48) 技巧20使用RefEdit控件选择区域 (51) 技巧21如何注册控件 (52) 技巧22遍历控件的方法 (55) 22-1使用名称中的变量遍历控件 (55) 22-2使用对象类型遍历控件 (57) 22-3使用程序标识符遍历控件 (58) 22-4使用名称中的变量遍历图形 (59) 22-5使用FormControlType属性遍历图形 (60) 技巧23使微调框最小变动量小于1 (61) 技巧24不打印工作表中的控件 (63) 24-1设置控件格式 (63) 24-2设置控件的printobjcet属性 (65) 技巧25在框架中使用滚动条 (65) 技巧26使用多页控件 (67) 技巧27标签文字垂直居中对齐 (69)

相关文档