Excel 使用用户界面
更新时间:2023-09-28 23:16:01 阅读量: 综合文库 文档下载
- excel推荐度:
- 相关推荐
第 8 章 使用用户界面
第 8 章 使用用户界面
用户界面是用户使用 VBA 处理数据时经常使用的对象。在用户需要使用数据交互时,
用户界面是一个非常有用的工具。用户可以根据需要向用户窗体添加各种功能的控件,实 现各种复杂的交互作用。
8.1 使用内置对话框
在 Excel 中,为了用户开发的便利,提供了多种固定功能的对话框。用户在实际开发 过程中,根据需要调用对应的内置对话框。在本小节中,将结合具体的例子来说明如何使 用内置对话框。
案例 153 使用“打开”对话框
1.功能说明
在程序中需要交互式地打开某个文件时,如果使用 InputBox 函数让用户输入路径和文 件名,容易出错并且不直观。在这个时候,用户可以选择使用对话框。
2.语法说明
在 Excel VBA 中,使用 Application 对象的 GetOpenFilename 方法将打开标准的“打开” 对话框,让用户在计算机中选择盘符、路径、文件类型和文件名等信息。其语法格式如下:
表达式.GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)
该方法的参数都可省略,各参数的含义如下:
? FileFilter:一个指定文件筛选条件的字符串。
在 FileFilter 参数中传递的字符串由文件筛选字符串对以及后跟的 DOS 通配符文件筛 选规范组成,中间以逗号分隔。每个字符串都在“文件类型”下拉列表框中列出。例如, 下列字符串指定两个文件筛选——文本和加载宏:
“文本文件 (*.txt)、*.txt、加载宏文件 (*.xla)、*.xla”。
如果省略 FileFilter,则此参数默认为
“所有文件 (*.*),*.*”
要为单个文件筛选类型使用多个通配符表达式,需用分号将通配符表达式分开。例如:
\文件(*.xls;*.xlsx;*.xlsm),*.xls;*.xlsx;*.xlsm,\
? FilterIndex:指定默认文件筛选条件的索引号,取值范围为 1 到由 FileFilter 所指定的 筛选条件数目。如果省略该参数,或者该参数的值大于可用筛选条件数,则使用第一
337
Excel VBA 语法词典
个文件筛选条件。
? Title:指定对话框的标题。如果省略该参数,则标题为“打开”。 ? ButtonText:在 PC 中不可用。 ? MultiSelect:如果为 False(默认值),则只允许选择一个文件名。如果为 True,则允
许选择多个文件名,返回值是一个包含所有选定文件名的数组,即使在“打开”对话 框中只选定了一个文件名,也将返回到一个数组中。
注意:当用户在该对话框中单击“打开”按钮时将返回选择的路径和文件名,但并不真正执行打开操
作。
3.案例说明
在本例中,将在程序代码中使用内置的“打开”对话框,选择用户需要查看的文件。 然后将文件名显示在工作薄中。
4.编写代码
使用“打开”对话框的程序代码如下:
Sub OpenDiag()
Dim sFilt As String Dim sTitle As String Dim sMsg As String Dim sFname As Variant Dim i As Integer Dim sf As Variant
sFilt = \文本文件(*.txt),*.txt,\
\所有文件(*.*),*.*\
sTitle = \打开文件\
sFname = Application.GetOpenFilename _
(filefilter:=sFilt, Title:=sTitle, MultiSelect:=True) If Not IsArray(sFname) Then
MsgBox \请选择文件!\Else
i = 1
ActiveSheet.Columns(1).Clear For Each sf In sFname
sMsg = sMsg & sf & vbCrLf ActiveSheet.Cells(i, 1) = sf i = i + 1 Next End If End Subf
338
第 8 章 使用用户界面
5.运行结果
运行程序代码,选择系统的文件类型,如图 8.1 所示。
图 8.1 选择系统文件类型
选择多个文件,然后单击对话框中的“打开”按钮,如图 8.2 所示。
图 8.2 选择打开多个文件
关闭对话框,查看 Excel 文件中的保存信息,如图 8.3 所示。
339
Excel VBA 语法词典
图 8.3 Excel 文件中的保存路径信息
6.程序分析
在上面的代码中,首先显示一个“打开”对话框,选中的文件名将返回到数组中,使
用 IsArray 函数检测返回值,如果不是数组则表示没有选择文件。最后使用循环语句将数 组中的文件名逐个取出来填充到工作表中。
案例 154 使用“保存”对话框
1.功能说明
和“打开”对话框类似,用户同样可以使用 VBA 代码调用“保存”对话框,用来保 存文件。
2.语法说明
与 GetOpenFilename 方法类似,使用 Application 对象的 GetSaveAsFilename 方法可打 开标准的“另存为”对话框,在该对话框中用户可以选择(或输入)一个文件名。其语法 格式如下:
表达式.GetSaveAsFilename(InitialFilename, FileFilter, FilterIndex, Title, ButtonText)
该方法的参数与 GetOpenFilename 方法类似,可参见上例中的介绍。
3.案例说明
在本例中,将调用系统内置的“保存”对话框,选择保存文件,并显示保存文件的路 径。
4.编写代码
使用“保存”对话框的 VBA 代码如下:
Sub UserSaveAS()
Dim sFilt As String
340
第 8 章 使用用户界面
Dim sTitle As String
Dim sMsg As String Dim sFname As Variant
Dim fileSaveName As String
sFilt = \文件(*.xls;*.xlsx;*.xlsm),*.xls;*.xlsx;*.xlsm,\
\所有文件(*.*),*.*\sTitle = \保存文件\
fileSaveName = Application.GetSaveAsFilename(filefilter:=sFilt, _
FilterIndex:=2, Title:=sTitle)
If fileSaveName <> \
MsgBox \文件保存路径是:\End If End Sub
5.运行结果
运行程序代码,选择系统的文件类型,如图 8.4 所示。
图 8.4 保存文件
6.程序分析
本例的程序代码和前面小节类似,就不详细展开分析。
341
Excel VBA 语法词典
案例 155 调用内置对话框
1.功能说明
前面案例介绍 Excel 的内置对话框,都是通过 Application 对象的方法形式来显示的。 在 Excel 中还有更多的内置对话框,这些对话框组成了 Dialogs 集合。用户可以使用该集 合调用内置对话框。
2.语法说明
在 Excel 2007 中,Dialogs 集合包括了多个内置对话框。可使用以下代码查看内置对 话框具体的数量:
MsgBox Application.Dialogs.Count
每个内置对话框由一个预定义的常量表示,要显示某个对话框,只需使用 Dialogs 集 合对象的 Show 方法即可。
如使用以下代码,将显示 Excel 的“打开”对话框。
Application.Dialogs(xlDialogOpen).Show
3.案例说明
本例的主要功能是在程序代码中调用内置的“打开”和“另存”对话框。
4.编写代码
(1)调用“打开”对话框的 VBA 代码如下:
Sub UserOpenFiles()
Application.Dialogs(xlDialogOpen).Show End Sub
(2)调用“另存”对话框的 VBA 代码如下:
Sub USerSaveFiles()
Application.Dialogs(xlDialogSaveAs).Show \自定义文件.xlsm\End Sub
5.运行结果
运行第一段程序代码,调用“打开”对话框,如图 8.5 所示。
342
第 8 章 使用用户界面
图 8.5 “打开”对话框
运行第二段代码,调用“另存为”对话框,如图 8.6 所示。
图 8.6 “另存为”对话框
6.程序分析
用户可以将本例的代码和前面案例中的代码进行比较,查看两种打开对话框方法的不
同。
案例 156 调用功能区功能
1.功能说明
功能区是 Excel 2007 新增的对象,用户可以通过 VBA 代码调用功能区的功能。
343
Excel VBA 语法词典
2.语法说明
在 Excel 2007 中,使用 CommandBars 集合的 ExecuteMso 方法可执行由 idMso 参数标 识的控件功能。在 Excel 2007 中,内置按钮等控件都具有 idMso 参数,通过 ExecuteMso 方法可调用这些控件的功能,该方法的语法格式如下:
表达式.ExecuteMso(idMso)
参数 idMso 为控件的标识符。
3.案例说明
本例的主要功能是在程序代码中调用内置的“打开”和“另存为”对话框。
4.编写代码
(1)调用“打开”对话框的 VBA 代码如下:
Sub 打开文件()
Application.CommandBars.ExecuteMso (\End Sub
(2)调用“另存为”对话框的 VBA 代码如下:
Sub 另存文件()
Application.CommandBars.ExecuteMso (\End Sub
5.运行结果
运行第一段程序代码,调用“打开”对话框,如图 8.7 所示。
图 8.7 调用“打开”对话框
运行第二段代码,调用“另存为”对话框,如图 8.8 所示。
344
第 8 章 使用用户界面
图 8.8 “另存为”对话框
6.程序分析
用 户 可 以 在 网 址 http://msdn.microsoft.com/office/tool/ribbon 中 下 载 文 件
2007OfficeControlIDsExcel2007.EXE,该文件包括了 Office 2007 各组件的控件列表。将该 文件解压后可以看到一个名为 ExcelRibbonControls.xlsx 的文件,其中包含了 Excel 2007 各 控件的 idMso。
8.2 创建自定义窗体
在前面小节中,用户已经了解了如何调用和使用 Excel 的内置对话框,在本小节中, 将详细讲解如何创建自定义窗体。在 Excel VBA 中,用户可以根据实际开发的需要,创建 自定义窗体。
案例 157 插入窗体
1.功能说明
插入窗体是用户创建自定义窗体的主要方法,在本小节中,将演示如何插入窗体。
2.语法说明
本例中介绍插入窗体的方法,其插入方法和前面章节中介绍的插入模块和过程类似。 主要是为了演示常见的插入方法。
345
Excel VBA 语法词典
3.案例说明
在本例中,将主要演示如何在 VBE 中插入自定义的窗体。
4.编写代码
在 Excel VBA 中,插入窗体的常见步骤如下: (1)进入 VBE 环境,然后选择“插入”|“用户窗体”选项,如图 8.9 所示。
图 8.9 选择插入窗体
(2)当用户选择对应的选项后,系统会显示出默认的用户窗体,如图 8.10 所示。
图 8.10 插入默认的用户窗体
(3)按 F5 键,调试程序代码,得到的空白窗体如图 8.11 所示。
346
第 8 章 使用用户界面
图 8.11 插入的空白窗体
5.运行结果
本例的主要功能是向 Excel 中插入空的窗体,最后运行的结果如图 8.12 所示。
图 8.12 插入的窗体
6.程序分析
从上面的结果中,用户可以看到关于窗体的默认属性。例如,系统插入的窗体自动命
名为“UserForm1”,并同时显示控件工具箱以及属性工具箱。
案例 158 删除窗体
1.功能说明
窗体是 Excel 的一种对象,当窗体中的数据无效时,用户需要删除窗体。
2.语法说明
由于用户窗体中一般包含着多种数据信息,因此在用户删除窗体的时候,系统会提示 是否导出该窗体,如果用户想彻底删除窗体,则选择不导出。
3.案例说明
当窗体不再需要时,可将窗体从工程中移除。本例将主要介绍如何删除 Excel 文件中 已有的窗体。
347
Excel VBA 语法词典
4.编写代码
在 Excel VBA 中,删除窗体的常见步骤如下: (1)在工程资源管理器中,选中需要删除的窗体对象 UserForm1。选中的窗体对象上, 单击鼠标右键,在弹出的快捷菜单中选择“移除 UserForm1”选项,如图 8.13 所示。
图 8.13 选择移除窗体
(2)系统弹出如图 8.14 所示的对话框,单击“否”按钮,直接删除窗体。
图 8.14 移除窗口提示
5.运行结果
本例的主要功能是将 Excel 的窗体删除,最后运行的结果如图 8.15 所示。
348
第 8 章 使用用户界面
图 8.15 删除窗体
6.程序分析
移除窗口提示中所使用的 UserForm1 是窗体的名称,选择移除不同的窗体对象时,其
取值会有所不同。例如,用户这定了名称为“MyForm”,则显示的是“移除 MyForm”选 项。
案例 159 导入窗体
1.功能说明
和其他对象类似,用户可以在开发过程中,向 VBE 中导入类似功能的窗体。
2.语法说明
当用户导出窗体进行保存后,在后续的开发中需要使用类似窗体时,就可以直接导出 该窗体。
3.案例说明
在实际开发过程中,用户可能需要创建各种类似的窗体。因此,为了节省创建窗体的 时间,用户可以选择导入之前已经保存的窗体文件。本例将主要介绍如何导入窗体。
4.编写代码
在 Excel VBA 中,导入窗体的常见步骤如下: (1)进入 VBE 环境,然后选择“文件”|“导入文件”选项,如图 8.16 所示。
(2)在“导入文件”对话框中,选择导入的窗体文件,然后单击“打开”按钮,就
349
Excel VBA 语法词典
导入对应的窗体文件,如图 8.17 所示。
图 8.17 导入窗体文件
5.运行结果
图 8.16 选择导入文件
用户可以查看导入窗体的情况,如图 8.18 所示。
6.程序分析
图 8.18 查看导入的窗体
从上面的例子中,用户可以看出,尽管导入的窗体文件名是“UserForm2”,但是由于 原来的文件中不包含窗体,所以导入后,系统将窗体的名称设置为默认的“UserForm1”。
案例 160 显示窗体
1.功能说明
用户可以使用 VBA 代码来控制窗体的显示属性。
350
第 8 章 使用用户界面
2.语法说明
在 Excel VBA 中,用户可以使用 Show 方法显示 UserForm 对象。其语法表达式如下:
[object.]Show modal
? ? ? ? 其中参数的含义如下:
object:代表对象表达式,其值为“应用于”列表中的对象。如果省略掉 object,则把 与活动的 UserForm 模块相关联的 UserForm 当作 object。 modal:决定 UserForm is 是模态的还是无模式的。 其中 modal 的设置值如下: vbModal:数值是 1,表示 UserForm 是模态的。这是默认数值。 vbModeless:数值是 0,表示 UserForm 是无模式的。
3.案例说明
在程序开发的过程中,有时需要控制窗体的显示。并不是希望窗体任何时候都出现在 程序当前,例如,当某个事件触发的时候,才会显示窗体。本例将演示如何在程序中显示 窗体。
4.编写代码
本例的代码下:
Sub ShowForms() UserForm1.Show End Sub
5.运行结果
当用户运行在 Sub 过程中的代码时,得到的程序结果如图 8.19 所示。
图 8.19 运行代码得到的结果
6.程序分析
本例的代码十分简单,只是使用 Show 方法直接显示窗体。
351
Excel VBA 语法词典
案例 161 设置窗体背景图片
1.功能说明
默认的窗体背景为灰色背景,为了增加窗体的美观性,可以为窗体添加背景图片。
2.语法说明
通过使用窗体的 Picture 属性可以窗体添加背景图片,并可以设置对应的属性。
3.案例说明
本例中将演示如何设置窗体的背景图片。
4.编写代码
设置窗体背景图片的主要步骤如下。
(1)在工程资源管理器中选择窗体,在属性窗口中,选中“Picture”属性,单击其后 的 按钮,如图 8.20 所示。
(2)弹出“加载图片”窗口,在其中选取相应的图片,如图 8.21 所示。
图 8.20 设置图片属性
图 8.21 选择设置的图片
5.运行结果
单击对话框中的“打开”按钮,设置窗体的背景图片,如图 8.22 所示。
352
第 8 章 使用用户界面
6.程序分析
图 8.22 设置窗体的背景图片
如果加载的图片大小超过了窗体的实际大小,系统会将超出部分截掉。为了使加载的
图片全部显示出来,可对设置窗体的 PictureAlignment 属性和 PictureSizeMode 属性。
案例 162 加载窗体图片
1.功能说明
在实际开发工程中,当用户希望某些事件触发后,窗体的背景图片修改,此时用户需 要为窗体加载图片。
2.语法说明
除了可以在设计窗体时为窗体添加图片外,还可以在 VBA 程序中为窗体添加图片。 此时需要使用 LoadPicture 函数,其返回值为一个 Picture 对象,使用方法如下所述,其中 的参数 filename 用于指明图片文件所在的路径和文件名。
LoadPicture(filename)
同时,为了设置加载图片的位置,需要使用 PictureAlignment 属性。该属性用来指定 一个背景图片的位置。其语法表达式如下:
object.PictureAlignment [= fmPictureAlignment]
参数说明如下:
? object:表示有效对象。
? fmPictureAlignment:表示图片与控件对齐的位置。fmPictureAlignment 的具体取值如
表 8.1 所示。
表 8.1 fmPictureAlignment的取值
常量 fmPictureAlignmentTopLeft fmPictureAlignmentTopRight fmPictureAlignmentCenter fmPictureAlignmentBottomLeft fmPictureAlignmentBottomRight 值 0 1 2 3 4 说明 左上角 右上角 中心 左下角 右下角 同时,为了设置窗体中图片的显示方式,还需要设置 PictureSizeMode 属性。该属性 的主要功能是指定在控件、窗体或页面上显示背景图片的方式。其语法表达式如下:
object.PictureSizeMode [= fmPictureSizeMode]
参数 fmPictureSizeMode 表示当图片与包含它的窗体或页面大小不等时,应执行的操 作。其具体取值如表 8.2 所示。
表 8.2
fmPictureSizeMode的取值 值 说明 353
常量
Excel VBA 语法词典
fmPictureSizeModeClip fmPictureSizeModeStretch fmPictureSizeModeZoom 0 1 3 裁掉图片中比窗体或页面大的部分(默 认)。 扩展图片使其填满窗体或页面。该设置值 使图片在垂直和水平方向都发生变形。 放大图片,但图片在水平和垂直方向上都 不变形 3.案例说明
本例中,首先显示的是一个空白窗体,如图 8.23 所示。然后在事件触发后,加载不同 的图片。
图 8.23 默认的窗体
4.编写代码
本例的主要代码如下:
Private Sub UserForm_Click()
With Me
.Picture = LoadPicture(\
.PictureAlignment = fmPictureAlignmentCenter .PictureSizeMode = fmPictureSizeModeZoom End With End Sub
5.运行结果
当用户单击窗口后,系统自动加载图片,结果如图 8.24 所示。
354
第 8 章 使用用户界面
图 8.24 运行结果
6.程序分析
LoadPicture 方法只能识别位图文件(.bmp)、图标文件(.ico)、行程编码文件、(.rle)
图元文件(.wmf)、增强型图元文件(.emf)、Gif 文件(.gif)、JPG 文件(.jpg)。
案例 163 创建 Splash 窗体
1.功能说明
所谓 Splash 窗口,就是主界面出现之前先出现的欢迎窗口。本例将需要创建一个带有 图片的 Splash 窗口。
2.语法说明
在 Excel VBA 中,窗体在显示之前,必须装载到内存中。如果显示一个没有装载的窗 体,该窗体将自动装载。如果想初始化窗体,而不显示窗体的话,可以使用如下方式装载。
Load frmSplash
窗体装载和卸载的顺序是:装载—显示—??—隐藏—卸载。卸载会清除窗体模块中 的所有的变量——类似于停止了一个过程。用户已经输入的任何数值都将丢失,控件将恢
复为在属性窗口中输入的缺省值。如果想保存它们的值,需要在卸载窗体前进行保存。
在 Excel VBA 中,用户窗体可以在两种“模式”之间显示,即模式或者无模式。模式 窗体,是指窗体显示时,用户只能在窗体中进行操作,不允许用户在 Excel 中进行其他的 操作。而无模式窗体,则是在该窗体显示时,还允许用户在 Excel 中进行其他操作,再回 到该窗体中来进行操作。
3.案例说明
在本例中,创建一个带有图片的 Splash 窗体。
4.编写代码
本例制作 Splash 窗体的步骤如下:
355
Excel VBA 语法词典
(1)在 VBE 中插入一个用户窗体,并向窗体中增加一个图像控件,如图 8.25 所示。
图 8.25 添加窗体对象
( 2 )双击窗本打开代码窗口,在窗体的 Activate 事件中编写代码, 设置调用 CloseUserForm 函数的时间间隔(该函数用来关闭 Splash 窗体)。具体代码如下:
Private Sub UserForm_Activate()
Application.OnTime Now + TimeValue(\End Sub
(3)在工程中插入一个模块,在模块中编写函数 CloseUserForm,用来卸载窗体,具 体代码如下:
Sub CloseUserForm() Unload UserForm1 End Sub
(4 )为了使工作簿一打开就自动打开 Splash 窗体,在“工程” 子窗体中双击 “ThisWorkbook”打开代码窗口,给 Workbook 对象的 Open 事件编写代码如下:
Private Sub Workbook_Open()
UserForm1.Show End Sub
5.运行结果
保存工作薄后,打开工作薄,查看添加的窗体情况,如图 8.26 所示。
356
第 8 章 使用用户界面
的任务。例如,如果用户尚未在任何一个 UserForm 中保存新数据,则应用程序可以提示
用户保存。
3.案例说明
在本例中,首先在窗体中添加标签控件,用户只能单击标签退出窗体。而不能使用窗 体中的关闭按钮。
4.编写代码
(1)窗体的初始化代码如下:
Private Sub UserForm_Initialize() Me.Caption = \禁用窗口关闭按钮\End Sub
(2)标签控件的单击事件代码如下:
Private Sub Label1_Click() Unload Me End Sub
(3)单击关闭按钮之前的事件代码如下:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If CloseMode = 0 Then
MsgBox \请单击窗体指定位置,关闭窗口!\禁用关闭按钮\Cancel = True End If End Sub
5.运行结果
其中,默认的窗体如图 8.43 所示。当用户单击窗口的关闭按钮后,系统显示的提示信 息如图 8.44 所示。
图 8.43 默认窗体
图 8.44 系统的提示信息
当用户单击窗口中的标签时,窗体关闭,如图 8.45 所示。
367
Excel VBA 语法词典
图 8.45 关闭窗体
6.程序分析
在 Excel VBA 中,加载窗体需要使用 Load 语句,此语句仅是将窗体加载到内存,并
不将窗体显示出来,其使用方法如下所示,窗体名是使用 Dim 声明窗体变量时所使用的窗 体名,加载窗体后如果不卸载窗体,其将一直保存在内存中。
Load 窗体名
368
正在阅读:
Excel 使用用户界面09-28
包车运输合同模板(2022年)04-11
甲级单位编制齿轮变速传动装项目可行性报告(立项可研+贷款+用地05-12
第三章 网络安全编程基础06-13
船舶货运教案10-12
高考英语微卷强化练 四11-02
一卡通产品设计05-24
学校少先队开展社团活动模式的探索与研究12-06
新员工财务知识培训08-09
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 用户界面
- 使用
- Excel
- 基础设施和公共服务设施建设
- 我国新型农村养老保险制度的研究2
- 校警合作共建新模式探析
- 几种重要金属测试题(理)
- 2013年事业单位《职业能力测验》全真模拟预测试卷(3)-中大网校
- Eclipse油藏数模群学员交流总7-11月总结
- 一级MS Office全真机试试卷
- 钢筋工程分项工程质量技术交底卡 - 图文
- 数的认识总复习练习题-六年级数学总复习练
- 大学生爱情兵法 期末考试
- 社区服务中心XX年“我们的节日·中秋节”主题活动实施方案
- 2019-2020学年九年级数学下册 2.3 确定二次函数的表达式讲学稿 北师大版 doc
- 古诗文默写训练含答案
- (1)申请搭建临时建筑报告 - 图文
- 清乾隆赏瓶黑釉的微观变化 - 图文
- 如何提高初中数学的复习效率-2019年学习文档
- 隆尧县国民经济和社会发展第十二个五年规划纲要
- 小布头奇遇记阅读测试题
- 20130722 碗米坡水电厂1#发变组保护换型改造可研报告(1)
- XX服饰有限公司考勤制度