vba控件常规使用UserForm 基础.docx

上传人:b****7 文档编号:10908760 上传时间:2023-02-23 格式:DOCX 页数:47 大小:28.86KB
下载 相关 举报
vba控件常规使用UserForm 基础.docx_第1页
第1页 / 共47页
vba控件常规使用UserForm 基础.docx_第2页
第2页 / 共47页
vba控件常规使用UserForm 基础.docx_第3页
第3页 / 共47页
vba控件常规使用UserForm 基础.docx_第4页
第4页 / 共47页
vba控件常规使用UserForm 基础.docx_第5页
第5页 / 共47页
点击查看更多>>
下载资源
资源描述

vba控件常规使用UserForm 基础.docx

《vba控件常规使用UserForm 基础.docx》由会员分享,可在线阅读,更多相关《vba控件常规使用UserForm 基础.docx(47页珍藏版)》请在冰豆网上搜索。

vba控件常规使用UserForm 基础.docx

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.

在运行菜单上,单击运行子过

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 其它考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1