vba控件常规使用UserForm 基础.docx
- 文档编号:10908760
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:47
- 大小:28.86KB
vba控件常规使用UserForm 基础.docx
《vba控件常规使用UserForm 基础.docx》由会员分享,可在线阅读,更多相关《vba控件常规使用UserForm 基础.docx(47页珍藏版)》请在冰豆网上搜索。
vba控件常规使用UserForm基础
vba控件常规使用
UserForm基础
如何显示UserForm
以下是用于显示UserForm编程语法是:
UserFormName.Show
要显示名为UserForm1,UserForm使用以下代码:
UserForm1.Show
不显示它实际上还能加载UserForm装入内存。
复杂UserForm可能需要几秒钟以显示。
因为预先您能加载到内存,UserForm可决定何时导致此开销。
要加载到内存UserForm1不显示它,使用以下代码:
LoadUserForm1
若要显示UserForm,必须使用以前已显示显示方法。
如何以暂时隐藏UserForm
如果要暂时隐藏UserForm,使用隐藏方法。
可能想要隐藏UserForm如果应用程序涉及用户窗体之间移动。
要隐藏UserForm,使用以下代码:
UserForm1.Hide
如何从内存删除UserForm
要从内存,删除UserForm使用Unload语句。
要卸载,名为UserForm1,UserForm使用以下代码:
UnloadUserForm1
如果您卸载UserForm,是与UserForm或者,是与UserForm上控件的事件过程中(例如,您单击CommandButton控件),您可以使用"我"关键字代替的UserForm名称。
将关键字用于卸载UserForm,"Me"使用以下代码:
UnloadMe
如何使用UserForm事件
支持许多预定义事件,可以附加到VBA过程。
在事件发生时,该附加到事件过程运行。
单个操作由用户执行可初始化多事件。
之间最经常对UserForm使用事件是Initialize事件、Click事件,和Terminate事件。
注意包含事件过程VisualBasic模块可能称为"后面"UserForm模块。
模块包含事件过程是不可见的VisualBasic编辑器ProjectMicrosoftInternetExplorer窗口Modules集合中。
您必须双击正文部分UserForm以查看UserForm代码模块。
如何捕获UserForm事件
要捕获UserForm事件,请按照下列步骤操作:
1.
Excel中创建新工作簿。
2.
在工具菜单,指向宏,然后单击VisualBasic编辑器。
3.
在插入菜单上,单击要在工作簿中插入UserFormUserForm。
4.
双击以显示代码窗口对于UserFormUserForm。
5.
模块,中键入如下代码:
PrivateSubUserForm_Click()
Me.Height=Int(Rnd*500)
Me.Width=Int(Rnd*750)
EndSub
PrivateSubUserForm_Initialize()
Me.Caption="EventsEventsEvents!
"
Me.BackColor=RGB(10,25,100)
EndSub
PrivateSubUserForm_Resize()
msg="Width:
"&Me.Width&Chr(10)&"Height:
"&Me.Height
MsgBoxprompt:
=msg,Title:
="ResizeEvent"
EndSub
PrivateSubUserForm_QueryClose(CancelAsInteger,CloseModeAsInteger)
msg="NowUnloading"&Me.Caption
MsgBoxprompt:
=msg,Title:
="QueryCloseEvent"
EndSub
PrivateSubUserForm_Terminate()
msg="NowUnloading"&Me.Caption
MsgBoxprompt:
=msg,Title:
="TerminateEvent"
EndSub
6.
在运行菜单上,单击运行子过程/用户窗体。
UserForm首先加载,时宏使用Initialize事件改为"事件事件事件!
"和BackColor属性以深蓝色的UserFormCaption属性。
当您单击UserForm,您初始化Click事件。
调整UserFormClick事件。
因为您创建Resize事件,过程单击UserForm后收到两个消息框。
因为Click事件代码更改宽度属性和Height属性是UserFormResize事件发生两次。
关闭UserForm初始化QueryClose事件。
QueryClose事件显示消息框包含标题为Initialize事件,您赋予UserForm代码中。
可以使用时要执行特定的操作集如果用户关闭UserFormQueryClose事件。
然后生成一个消息框,指出标题为UserForm是UserForm1Terminate事件。
从内存中删除UserForm并返回到其原始状态标题为UserForm后Terminate事件发生。
如何防止UserForm关闭通过关闭按钮
当您运行UserForm,关闭按钮添加到UserForm窗口的右上角。
如果要防止UserForm关闭通过关闭按钮,您必须捕获QueryClose事件。
QueryClose事件UserForm是从内存中卸载之前发生。
使用QueryClose事件CloseModeCloseMode参数来确定如何UserForm关闭。
vbFormControlMenu值为CloseModeCloseMode参数表示时,单击关闭按钮。
要保持活动,UserForm将Cancel取消对QueryClose事件参数为True。
要使用QueryClose事件来防止UserForm关闭通过关闭按钮,请按照下列步骤:
1.
Excel中创建新工作簿。
2.
在工具菜单,指向宏,然后单击VisualBasic编辑器。
3.
在插入菜单上,单击要在工作簿中插入UserFormUserForm。
4.
将CommandButton控件添加到UserForm。
5.
双击以显示代码窗口对于UserFormUserForm。
6.
在代码窗口,键入如下代码:
PrivateSubCommandButton1_Click()
UnloadMe
EndSub
PrivateSubUserForm_QueryClose(CancelAsInteger,CloseModeAsInteger)
IFCloseMode=vbFormControlMenuThen
Cancel=True
Me.Caption="ClicktheCommandButtontocloseMe!
"
EndIf
EndSub
7.
在运行菜单上,单击运行子过程/用户窗体。
当您单击关闭按钮UserForm未关闭。
您必须单击CommandButton控件关闭UserForm。
注意:
代码包含在本文中不包含影响所有属性和对控件事件的示例。
如果您不得不,请使用属性窗口要查看可供控件属性的列表。
要在视图菜单上,查看列表的属性,请单击属性窗口。
如何使用设计模式来编辑控件
当您使用"VisualBasic编辑器来设计一个对话框,使用设计模式。
在设计模式,您可编辑控件和可更改属性在属性窗口UserForm上的控制。
若要显示属性窗口,在视图菜单上,单击属性窗口。
当您处在设计模式注意控件不响应与事件。
当您运行一个对话框,显示方式,用户看到它,程序处于运行模式。
当UserForm是从内存中卸载将不会保留更改,对运行模式中控件的属性。
注意控件请回复到事件在运行模式。
如何引用UserForm上控件
如何您引用控件编程取决VisualBasic模块表运行代码的类型。
如果代码从常规模块,运行以下语法是:
=值
例如,如果要设置名为TextBox,名为到值是Bob,UserForm1UserForm上TextBox控件的Text属性使用以下代码:
如果代码是通过事件的控件或者通过UserForm,启动过程中是您不需要引用名为UserForm。
而,使用以下代码:
TextBox1.Text="Bob"
当向对象,附加代码代码附加到之一为对象事件。
众多,本文示例中,将代码附加到Click事件是CommandButton对象。
标签控件
标签控件主要用于描述UserForm上其他控件。
运行UserForm时Label控件不能编辑由用户。
使用Caption属性到设置或返回一个Label控件中文本。
用于格式化Label控件其他常用属性包括字体属性和ForeColor属性。
如何使用WITH语句设置Label控件格式
要使用WITH语句来更改属性的Label控件,请按照下列步骤:
1.
启动Excel,并打开新空白工作簿。
2.
在工具菜单,指向宏,然后单击VisualBasic编辑器。
3.
在插入菜单上,单击要在工作簿中插入UserFormUserForm。
4.
将Label控件添加到UserForm。
5.
将CommandButton控件添加到UserForm。
6.
双击以打开代码窗口对于UserFormCommandButton控件。
7.
在代码窗口,为CommandButton1Click事件键入下列代码:
PrivateSubCommandButton1_Click()
WithLabel1
'Setthetextofthelabel.
.Caption="ThisisLabelExample1"
'Automaticallysizethelabelcontrol.
.AutoSize=True
.WordWrap=False
'SetthefontusedbytheLabelcontrol.
.Font.Name="TimesNewRoman"
.Font.Size=14
.Font.Bold=True
'Setthefontcolortoblue.
.ForeColor=RGB(0,0,255)
EndWith
EndSub
8.
在运行菜单上,单击运行子过程/用户窗体。
9.
单击CommandButton。
文本粗TimesNewRoman用字体大小是14中Label控件上显示"Thisis标签示例1"。
TextBox控件
TextBox控件经常用于收集来自用户输入。
Text属性包含项,TextBox控件中进行。
如何使用TextBox控件来验证密码
如果您设置TextBox控件,PasswordChar属性的它成为"masked-编辑"控件。
由字符指定可视取代TextBox控件中键入的每个字符。
要使用TextBox控件来验证密码,请按照下列步骤:
1.
启动Excel,并打开新空白工作簿。
2.
在工具菜单,指向宏,然后单击VisualBasic编辑器。
3.
在插入菜单上,单击要在工作簿中插入UserFormUserForm。
4.
将TextBox控件添加到UserForm。
5.
在视图菜单上,单击属性以显示属性窗口。
6.
对TextBox控件,PasswordChar属性中键入*
注意您正将值改为星号。
7.
将CommandButton控件添加到UserForm。
8.
双击以打开代码窗口对于UserFormCommandButton控件。
9.
在代码窗口,为CommandButton1Click事件键入下列代码:
PrivateSubCommandButton1_Click()
IfTextBox1.Text<>"userform"Then
MsgBox"PasswordisIncorrect.Pleasereenter."
TextBox1.Text=""
TextBox1.SetFocus
Else
MsgBox"Welcome!
"
UnloadMe
EndIf
EndSub
10.
在运行菜单上,单击运行子过程/用户窗体。
11.
在TextBox控件中键入密码userform。
12.
单击CommandButton控件。
对于本例,密码是"userform"。
如果您键入正确密码,您收到一个消息框,指出密码不正确,然后重新键入密码可清除TextBox控件,并且。
当您键入正确密码,收到欢迎消息,并UserForm关闭。
CommandButton控件
您可以使用CommandButton控制来启动VBA过程。
VBA过程通常附加到CommandButton控件的Click事件。
要使用CommandButton控件Click事件发生,时,运行过程请按照步骤:
1.
启动Excel,并打开新空白工作簿。
2.
在工具菜单,指向宏,然后单击VisualBasic编辑器。
3.
在插入菜单上,单击要在工作簿中插入UserFormUserForm。
4.
将CommandButton控件添加到UserForm。
5.
双击以显示代码窗口对于UserFormCommandButton控件。
6.
在代码窗口,键入如下代码:
PrivateSubCommandButton1_Click()
red=Int(Rnd*255)
green=Int(Rnd*255)
blue=Int(Rnd*255)
CommandButton1.BackColor=RGB(red,green,blue)
EndSub
7.
在运行菜单上,单击运行子过程/用户窗体。
CommandButton1控件的背景颜色更改每次您单击它。
ListBox控件
ListBox控件的目的是为了向用户显示要选择的项目列表。
您可以存储为Excel工作表上ListBox控件项目列表。
使用RowSource属性来填充工作表,上ListBox控件与范围的单元格。
ListBox控件在使用MultiSelect属性,时可设置为接受多重选择。
如何从ListBox控件获取当前选定项
使用Value属性的ListBox控件可返回当前选定项。
要返回单项选择ListBox控件,中当前选定项请按照下列步骤操作:
1.
启动Excel,并打开新空白工作簿。
2.
在单元格A1:
A5Sheet,键入了您要用于填充ListBox控件值。
3.
在工具菜单,指向宏,然后单击VisualBasic编辑器。
4.
在插入菜单上,单击要在工作簿中插入UserFormUserForm。
5.
将ListBox控件添加到UserForm。
6.
双击ListBox控件以显示代码窗口对ListBox控件。
7.
在代码窗口,为ListBox1Click事件键入下列代码:
PrivateSubListBox1_Click()
MsgBoxListBox1.Value
EndSub
8.
在运行菜单上,单击运行子过程/用户窗体。
当单击列表,中的项目与当前选定项目将出现一个消息框。
如何获取多选择ListBox控件中选定项
确定多选择ListBox控件,中所选项目必须循环列表,中所有项目并再查询Selected属性。
要返回多选择,ListBox控件中当前选定项请按照下列步骤操作:
1.
启动Excel,并打开新空白工作簿。
2.
在单元格A1:
A5Sheet,键入了您要用于填充ListBox控件值。
3.
在工具菜单,指向宏,然后单击VisualBasic编辑器。
4.
在插入菜单上,单击要在工作簿中插入UserFormUserForm。
5.
将ListBox控件添加到UserForm。
6.
在视图菜单上,单击属性以查看属性窗口。
7.
键入值,对于下列ListBox控件属性表示:
PropertyValue
----------------------------------
MultiSelect1-frmMultiSelectMulti
RowSourceSheet1!
A1:
A8
8.
将CommandButton控件添加到UserForm。
9.
双击以显示代码窗口对于UserFormCommandButton控件。
10.
在代码窗口,为CommandButton1Click事件键入下列代码:
SubCommandButton1_Click()
'LoopthroughtheitemsintheListBox.
Forx=0toListBox1.ListCount-1
'Iftheitemisselected...
IfListBox1.Selected(x)=TrueThen
'displaytheSelecteditem.
MsgBoxListBox1.List(x)
EndIf
Nextx
EndSub
11.
在运行菜单上,单击运行子过程/用户窗体。
12.
列表中选择一个或多个项目。
13.
单击CommandButton1。
单击CommandButton1,后,在ListBox控件中选择每个项目显示在一个单独的消息框。
UserForm在消息框中,出现所有选定项后自动关闭。
如何使用RowSource属性来填充工作表上以ListBox控件
要使用RowSource属性来填充工作表,上ListBox控件从范围的单元格请按照下列步骤:
1.
启动Excel,并打开新空白工作簿。
2.
在单元格A1:
A5Sheet,键入了您要用于填充ListBox控件值。
3.
在工具菜单,指向宏,然后单击VisualBasic编辑器。
4.
在插入菜单上,单击要在工作簿中插入UserFormUserForm。
5.
将ListBox控件添加到UserForm。
6.
将CommandButton控件添加到UserForm。
7.
双击以显示代码窗口对于UserFormCommandButton控件。
8.
在代码窗口,为CommandButton1Click事件键入下列代码:
PrivateSubCommandButton1_Click()
ListBox1.RowSource="=Sheet1!
A1:
A5"
EndSub
9.
在运行菜单上,单击运行子过程/用户窗体。
注意ListBox1不包含任何值。
10.
单击CommandButton1。
ListBox1填充单元格A1:
A5Sheet中有值。
如何填充一个ListBox控件数组中有值
下例显示您如何填充以数组ListBox控件。
数组中每次为ListBox控件项必须分配值。
通常,此过程要求您使用循环结构,如ForàNext循环。
要填充以数组,ListBox控件请按照下列步骤操作:
1.
启动Excel,并打开新空白工作簿。
2.
在工具菜单,指向宏,然后单击VisualBasic编辑器。
3.
在插入菜单上,单击要在工作簿中插入UserFormUserForm。
4.
将ListBox控件添加到UserForm。
5.
在插入菜单上,单击要插入模块表模块。
6.
在代码窗口,键入如下代码:
SubPopulateListBox()
DimMyArrayAsVariant
DimCtrAsInteger
MyArray=Array("Apples","Oranges","Peaches","Bananas","Pineapples")
ForCtr=LBound(MyArray)ToUBound(MyArray)
Next
UserForm1.Show
EndSub
7.
然后单击运行在工具菜单上,、"PopulateListBox,和宏。
PopulateListBox过程建立简单数组,并数组中通过使用AddItem方法添加到ListBox控件项目。
然后,UserForm出现。
如何使用工作表上水平的单元格区域来填充一个ListBox控件
如果将ListBox控件的RowSource属性到水平区域的单元格,ListBox控件中第一个值只会出现。
要通过使用AddItem方法,ListBox控件从水平区域的单元格填充请按照下列步骤操作:
1.
启动Excel,并打开新空白工作簿。
2.
在单元格A1:
E1Sheet,键入了您要用于填充ListBox控件值。
3.
在工具菜单,指向宏,然后单击VisualBasic编辑器。
4.
在插入菜单上,单击要在工作簿中插入UserFormUserForm。
5.
将ListBox控件添加到UserForm。
6.
在插入菜单上,单击要插入模块表模块。
7.
在代码窗口,键入如下代码:
SubPopulateListWithHorizontalRange()
ForEachxInSheet1.Range("A1:
E1")
Next
UserForm1.Show
EndSub
8.
然后单击运行在工具菜单上,、"PopulateListWithHorizontalRange,和宏。
在单元格A1:
E5Sheet,将值添加到ListBox1一次循环宏过程。
A1:
E5单元注意ListBox1与不定Sheet1上。
如何从ListBox控件绑定到多列的数据返回多个值
您可以格式ListBox控件以显示多个列的数据。
这意味着ListBox控件,每个列表行上显示多个项目。
要多值列表,中选定项收益请按照下列步骤操作:
1.
启动Excel,并打开新空白工作簿。
2.
Sheet由该单元格中键入以下数据:
A1:
年
B1:
区域
C1:
销售
A2:
1996
B:
北美
C2:
140
3:
1996
B3:
南非
C3:
210
A4:
1997
B4:
北美
C4:
190
A5:
1997
B5:
南非
C5:
195
3.
在工具菜单,指向宏,然后单击VisualBasic编辑器。
4.
在插入菜单上,单击要在工作簿中插入UserFormUserForm。
5.
将Label控件添加到UserForm。
6.
将ListBox控件添加到UserForm。
7.
右击ListBox,然后单击属性。
8.
键入或选择值,都表示为下列属性对ListBox控件与下表中列出:
PropertyValue
----------------------------
BoundColumn1
ColumnCount3
ColumnHeadsTrue
RowSourceSheet1!
A2:
A5
9.
双击ListBox控件以显示代码窗口对ListBox控件。
10.
在代码窗口,键入如下代码:
PrivateSubListBox1_Change()
DimSourceDataAsRange
DimVal1AsString,Val2AsString,Val3AsString
SetSourceRange=Range(ListBox1.RowSource)
Val1=ListBox1.Value
Val2=SourceRange.Offset(ListBox1.ListIndex,1).Resize(1,1).Value
Val3=SourceRange.Offset(ListBox1.ListIndex,2).Resize(1,1).Value
Label1.Caption=Val1&""&Val2&""&Val3
EndSub
11.
在运行菜单上,单击运行子过
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vba控件常规使用UserForm 基础 vba 控件 常规 使用 UserForm