加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

用VBA代码编辑器绘制用户窗体

(2014-04-17 18:59:39)
标签:

杂谈

用VBA代码编辑器绘制用户窗体

由七个部分组成

学习如何借助用户窗体在VBA中创建自己的自定义对话框。这是该系列的第一部分(其他部分是写代码的用户窗体创建高级控制)。

  1. VBA用户窗体简介(本文)
  2. 在VBA中创建和使用用户窗体
  3. 属性窗口
  4. 选择窗体和控件
  5. 格式化窗体和控件
  6. 分组,对齐,调整大小,间距和排列
  7. 控制是如何形成键的作用

这个博客是我们的一部分,Excel的VBA系列教程我们还运行在Excel培训课程在VBA课程

*该教材由谷歌翻译,原帖作者为安迪·布朗,本人只是略作校订。原帖网址:(http://www.wiseowl.co.uk/blog/s229/vba-userform.htm)
1、VBA用户窗体简介

什么是用户窗体

一个用户窗体(或只是形式)就是您自己创建一个对话框。就像这样:

用VBA代码编辑器绘制用户窗体 用VBA代码编辑器绘制用户窗体
一个消息框 一个输入框

当然,我们可以通过添加一些控件和格式使之更为个性,就像这样:

酒水订购表格

这是我们要做的办公室饮料预定窗体。

 

用户窗体不限于Excel中:Word,PowerPoint和SharePoint Designer都可以使用相同的程序创建(而Access和Outlook,通常情况下,也可以通过自带的程序做到)。

用户窗体的优点和缺点

你应该学习如何创建和使用用户窗体?在学习之前我们先了解一下用户窗体的优缺点,这是优点

优点 笔记
印象深刻 自定义窗体带有的下拉列表,命令按钮,图片和格式化更能打动客户或经理。
易于使用 对于那些不喜欢直接在Excel表格中输入数据的用户,您可以通过创建窗体,使很大操作更为简单。

这些都是强大的优势; 硬币的另一面怎么样

坏处 笔记
验证数据 创建用户窗体是容易的; 但确保用户输入的数据是否正确,需要更长的时间。在工作​​表中,您可以像使用数据验证和保护工具,确保用户输入正确的数据类型,但在窗体中你将不得不更加努力,以避免错误。
偶尔抽风 我从多年​​的Excel和书写系统培训的经验是,用户窗体偶尔崩溃 -当 Excel本身却很少。

 

现在你知道什么是窗体了,让我们来看看如何创建一个,如何并用宏来运行它。

2、在VBA中创建和使用用户窗体

创建一个窗体

在VBA中创建一个用户窗体很容易 - 在代码编辑器中,只需右键单击并选择添加用户窗体:

http://s9/middle/001PLqnDzy6IbdchWk018&690

右键单击一个项目/工作簿,然后选择显示插入一个用户窗体的选项。

 

你将被示以一个长方形的窗体,您可以拖拉右下角来调整大小:

http://s12/middle/001PLqnDzy6IbdclmOLdb&690

单击并拖动右下角来调整用户窗体 - 它将始终出现在代码编辑器窗口的左上角。

 

就像宏,一个用户窗体存储为一个工作簿的一部分,而不是一个单独的文件。

控件

您添加到用户窗体的东西被称为控件下面简单的窗体有3个控件:

http://s10/middle/001PLqnDzy6Ibdcn1PPb9&690

1个标签,1个文本框和1个命令按钮。

 

下面饮品订购窗体已超过10控件:

http://s16/middle/001PLqnDzy6IbdcqvE33f&690

这种相对简单的窗体包括:

  • 1个图像
  • 3个标签
  • 2个文本框
  • 1个组合框
  • 1个滚动条
  • 2个按钮
  • 1个框架
 

在这个系列后来的博客展示了如何添加一些更深奥的控制 - 现在,我们介绍一般原则。

2、在窗体上绘制控件

您可以使用工具箱绘制绘制窗体上的任何控件

http://s7/middle/001PLqnDzy6IbdctGJ086&690

表格工具箱 -最简单的控件都显示在左上角。

你可以让你的鼠标徘徊在每个控件上,看看它是什么:这是标签控件被选中。

 

当你打开一个表格,如果您看不到工具箱窗口,请尝试在这里单击工具箱

http://s16/middle/001PLqnDzy6IbdcydLp7f&690

如果它擅离职守不见了,单击显示的工具以显示 工具箱

一旦你选择了你的控制工具,您可以单击并拖动到窗体上的任何位置:

http://s14/middle/001PLqnDzy6IbdcBmvb9d&690

在这里,鼠标指针显示你正在绘制一个 标签控件。

 

在选定的位置上只需点击Excel(和任何其他应用程序一样)就会绘制具有标准尺寸和形状的控件。

经学会了如何绘制控件,让我们继续前进,以如何展示自己 的属性

3、属性窗口

如果你在设计表格需要花很多的时间,你需要属性窗口永久可见:

http://s6/middle/001PLqnDzy6IbdcF6mh15&690

在 属性窗口中,您可以更改窗体或其控件的任何方面。

 

显示属性窗口

您可以使用菜单显示属性

http://s16/middle/001PLqnDzy6IbdcXgarcf&690

选择菜单选项的属性窗口来显示。

 

或者,您也可以按F4键或单击该工具:

http://s11/middle/001PLqnDzy6Ibdd297Qea&690

单击该工具 以显示属性窗口。

按字母排序或按分类排序属性

您可以从显示的列表中从A到Z或者分类选择您需要的属性,通过单击属性窗口的顶部:

我不知道我有什么建议,但这个博客的其余部分将始终使用分类(或者应该被分类的?)视图。

 

已经学会了如何显示属性,您接下来需要学习如何选择控件。

4、选择窗体和控件

要格式化一个窗体上的任何控件,您首先需要知道如何选择它/它们。我们首先看一下选择一个控制,然后看看如何来同时选择多个的控件(本博客的下一部分将会学习如何格式化控件和窗体)。

选择一个单一的控件

要改变单一控件,请单击以选中它,然后使用属性窗口:

http://s12/middle/001PLqnDzy6Ibddlr9V1b&690

任何控制,以显示其属性右键单击,如下图所示,如果他们不是已经可见(前面已经提到过,您也可以按F4键 在任何时候,弹出属性 窗口)。

 

或者,您也可以在属性窗口本身选择控件

http://s4/middle/001PLqnDzy6Ibddphx973&690

点击下拉箭头,选择要更改属性的控件。

 

选择多个控件

有几种方法可以同时选择多个控件。最简单的方法可能是用鼠标左键:

http://s8/middle/001PLqnDzy6IbddqEppe7&690

单击并拖动窗体上绘制一个矩形,并确保你开始位置在空白区。这个矩形接触或包围的控件将被选中。这个例子会选取了3个控件。

 

或者,您可以使用SHIFT键CTRL 键:

http://s3/middle/001PLqnDzy6Ibdduzt092&690

在这个例子中,如果你点击[确定] 按钮,如图所示:

  • CTRL 键不放,它会添加到当前选择的按钮; 
  • SHIFT 键不放,就会添加按钮和文本框(因为是文本框在标签和按钮前加入,从而谎言“之间”)。
 

或者,您可以按CTRL A 一气呵成选择窗体上的每个控件。

主导控件

如果选择多个控件,有一个(也是唯一一个)控件周围会出现白色的方框; 而其他的是黑色。这个白色的方框的选择被称为主导控件

http://s13/middle/001PLqnDzy6IbddvoMA1c&690

这里的标签Name: 是主导控件。如果你选择了多个控件,您可以点击其中任何一个做,作为新的主导控制。

 

这句话的意思是,如果你调整多个选定控件的大小或对齐时(本博客后面会提到),将以主导控件作为参照:

http://s12/middle/001PLqnDzy6IbddwYe74b&690

上图所示为左对齐的结果。向红线对齐,因为这是主导控件的左边缘。

 

选择整个窗体 

如果你想为一个窗口(如它的名称)更改属性,你需要选择它:

http://s2/middle/001PLqnDzy6IbddLDCF71&690

单击窗体上其他控件以外的的任意位置,选择窗体,如下图所示。

 

 

现在,你知道如何选择一个窗体或其控件,是时候来看看如何格式化它/它们。

格式化窗体和控件

您可以通过选择它/它们(如本博客的前面部分所示),然后按如下所示更改属性格式化形式或任何其控制。

窗体标题

要改变窗体的标题:

http://s14/middle/001PLqnDzy6IbddRy3zad&690

要改变窗体的标题:

  1. 确定要显示的标题。
  2. caption属性键入(真奇怪!在键入的同时我们可以看到窗口的标题会随着改变)。
 

改变背景和前景颜色

您可以选择控件(S)或窗体本身来改变其颜色:

http://s16/middle/001PLqnDzy6IbddWGrJ7f&690

更改:

  1. 背景色属性; 
  2. 前景色属性

如下图所示。

 

当改变颜色属性,一定要使用的调色板的颜色或系统的颜色:

http://s3/middle/001PLqnDzy6Ibde0d2ic2&690

选择 调色板选项卡,看看有什么颜色你选择!

 

设置控件的背景色为透明的方式略有不同:

http://s5/middle/001PLqnDzy6Ibde3GMk44&690

更改背景样式控件的(BackStyle)属性为透明,这样控件就会和整个窗体的颜色一致。

 

字体

更改控件的不理想的初始字体:

http://s13/middle/001PLqnDzy6Ibde6V2Y6c&690

单击 字体属性,生成按钮(带有3个点)出现。点击这里!

 

字体对话框的出现使一切变得简单:

http://s13/middle/001PLqnDzy6IbdecHRW5c&690

唷!这个现在看起来很熟悉。

控件文本的水平对齐

在下面的窗体中,选定标签右对齐水平:

http://s1/middle/001PLqnDzy6Ibdeg3God0&690

默认的对齐方式为左对齐,已经有人已经改变了这些控件。

 

要更改水平对齐方式,你可能会期待有这样的工具:

http://s11/middle/001PLqnDzy6IbdehZNM7a&690

应该有这样的工具。他们在哪里?

 

没找不到,对齐属性也没有呀?这是文本对齐TextAlign(当然!),就是它:

http://s16/middle/001PLqnDzy6Ibdelfz10f&690

该 文本对齐属性有3个。

 

控件文本的垂直对齐

一个控件文本的垂直对齐文本也很简单 - 这一点在用户窗体里可能用不到!

http://s10/middle/001PLqnDzy6IbdenAGl19&690

如果你想要的标题出现在文本框的垂直中心,你只能在文本的前面按Enter键 

 

窗体内居中对齐

在下面的命令按钮在窗体内水平居中对齐

http://s15/middle/001PLqnDzy6IbdeqP02fe&690

Order按钮水平居中。

 

要做到这一点,选择相关的控件,然后选择下列选项之一:

 

设置的控件的边框

您可以设置控件的边框的颜色和厚度:

http://s11/middle/001PLqnDzy6Ibdeypnkfa&690

这种控制有一个黑色的边框。

 

要做到这一点,设置如下所示的两个属性:

http://s2/middle/001PLqnDzy6IbdeCEx371&690

如果没有设置边框的样式,也就不用设置边框的颜色了。

 

这四个属性你可能不必更改

有一些属性我认为你不应该改变!

http://s16/middle/001PLqnDzy6IbdeET4Xcf&690

图片属性允许您在窗体上设置背景图片,但他们总是掩盖的内容。你可以平铺,拉伸和缩放照片,但最好删除它们!

 
http://s6/middle/001PLqnDzy6IbdeGZVPa5&690

您可以设置滚动条属性水平, 垂直两者都的形式,但在你不需要的情况下,最好关掉(或者在需要的时候选择使用多页控件)。

 
http://s4/middle/001PLqnDzy6IbdeKMJt53&690

窗体的初创位置属性start-up position property,但最明智的位置似乎是在其所属程序(即Excel表格)的中间,这是默认的,如下图所示。

 
http://s5/middle/001PLqnDzy6IbdeQYwQ44&690

窗体的模块属性:如果你设置为,用户可以忽略窗体并单击操作Excel表格,这可能不是一个好主意。

 

 

现在,我们已经学习了格式化的窗体和单独的控件,让我们继续学习格式化多个控件:即多个控件的对齐,大小,间距和分组控制。

6、分组,对齐,调整大小,间距和排列

在前面我们学习同时选中多个控件时提到,带有白色小方块的主导控件(以及这意味着什么)。在这里我们学习多个控件的对齐,大小,间距和分组控制


控件间的对齐

要对齐控件,请选择它们,然后选择下图所示,鼠标右键选项:

http://s3/middle/001PLqnDzy6Ibdf6ioG22&690

在这里的Name标签是占主导控件,这样选择左对齐(如图所示)时,选定的控件会向它的左边缘对齐。

 

均分控件的水平或垂直间距

在下面的表格中,各控件需要平均分部:

http://s13/middle/001PLqnDzy6Ibdf7mNK3c&690

在这种情况下,控件间隔等距会更好看。

 

要做到这一点,选择控件如图所示,然后选择此处显示的菜单选项之一:

http://s1/middle/001PLqnDzy6IbdfahGw50&690

在这个实例中所示的选项就是我们想要的。

 

请注意,在这种情况下,你将不得不对文本框/组合框做同样的事情,让他们以同样的方式排列。

使控件大小一致

以下是如何获得2个或多个控件具有相同的大小或宽度:

http://s6/middle/001PLqnDzy6Ibdfcmsle5&690

选择控件,然后在其中一个右键单击并选择此处显示的菜单选项。Drink组合框是主导控制,所以另外两个选定的控件将被调整为和该控件相同的宽度。

 

分组控件

在你设计的窗体中有些部分,作为一组是非常有用的,使它们就像一个单一的控件:

http://s4/middle/001PLqnDzy6IbdfgDqXb3&690

在这里,我们希望将所有框架中的控件组合到一起,这样我们就可以作为一个整体来移动操作。

 

做到这一点的方法是选择所有控件并将它们组合在一起的:

http://s7/middle/001PLqnDzy6IbdfkIHIb6&690 http://s5/middle/001PLqnDzy6IbdflUUI04&690
这样来组合控件... ......选择时会成为一体。

即使控件组合在一起,你仍然可以在组内分别格式化单个控件,让您两全其美。

可以以同样的方式取消组合:

http://s15/middle/001PLqnDzy6Ibdfq4xw6e&690

在分组组控件单击鼠标右键并选择取消组合如下所示。

 

使用框架组合控件

另一种组合方式是通过创建一个框架。首先剪切你希望出现在框架上的控件:

http://s3/middle/001PLqnDzy6Ibdfu0XUa2&690

选择要组合在一起的控件,并剪切他们到剪贴板。

 

点击框架Frame工具,并用它来 ​​绘制一个矩形:

http://s8/middle/001PLqnDzy6IbdfxLqn27&690

点击该工具,并绘制你的框架的矩形。

 

现在,您可以删除该框架的标题,并粘贴控件:

http://s16/middle/001PLqnDzy6IbdfACdhbf&690

删除 Frame1的标题(在其Caption属性中 ),使其看起来更整洁,然后从剪贴板中粘贴控件拖到框架内

 

结果:无论该框架去哪里,其中的控件也会跟随:

http://s2/middle/001PLqnDzy6IbdfCRIB81&690

当您移动框架时,其中的控件也随之移动。

 

你可以设置框架边框属性为 frmBorderStyleNone隐藏边框,如果你不希望看到矩形框。

 

7、怎样用快捷键控制窗体

我们已经知道了如何格式化表格,我们现在学习在窗体内使用快捷键,以及输入Tab键 取消键。

控制Tab键顺序

当你按下Tab键 键窗体会发生什么?答案取决于窗体的Tab键顺序:

http://s12/middle/001PLqnDzy6IbdfEZqX4b&690

当你按下Tab键 键窗体会发生什么?你想光标跳转到下一个可以“获得焦点” 的控件,-也就是说, Drink组合框。

 

可以在窗体框架或者 多页控件设置Tab键顺序如果您选择了窗体,你会看到窗体的Tab键顺序:

http://s16/middle/001PLqnDzy6IbdfGnlJ5f&690

选择窗体框架或者 多页控件,然后选择要更改的Tab键顺序如图所示。

  • 如果您已经选择了窗体,你会看到窗体上的顶级控件; 
  • 如果您(此例)选择了一个框架,你会看到框架内的控件。
 

如果你选择了框架或者多页,你只会看到一些窗体的控件:

http://s1/middle/001PLqnDzy6IbdfJOusd0&690

因为你选择了一个框架,你只能在框架内的控件的Tab键顺序。

 

很奇怪的是Tab键顺序包括标签控件,实际上由于这些控件不能接收焦点(你不能点击它们),故而与Tab键顺序无关。接下来我们来看看怎样让标签的快捷键出现在 Tab键顺序对话框。

快捷键

在下面的窗体,你可以按ALT Ð 跳转到Drink:组合框,因为该标签具有D下划线:

http://s3/middle/001PLqnDzy6IbdfMsrUc2&690

带下划线的字母 D被称为快捷键。

 

您只能将快捷键连接到标签,而不能连接文本框或组合框。当你按下会发生ALT Ð 光标会跳转到Tab顺序中的下一个可以接收焦点的Drink组合框。

http://s7/middle/001PLqnDzy6IbdfOT9Ib6&690

Drink:组合框是lblDrink标签后的第一个控件且可以接收焦点(比如,您可以单击进入)。

 

至于你如何安装快捷键 - 这是很容易的:

http://s12/middle/001PLqnDzy6IbdfSd51cb&690

在Accelerator属性中输入一个字母

 

默认按钮(回车键)

当窗体出现在窗口时通常会有一个边框加粗的命令按钮。按下Enter键,命令开始执行:

http://s6/middle/001PLqnDzy6IbdfTphX15&690

在这里, Order按钮的边框略有加粗,按下Enter键,命令开始执行:

 

要想使该按钮为默认,就需要设置其Default属性为

http://s9/middle/001PLqnDzy6IbdfWbQA28&690

选择Order按钮设置Default属性为

 

请注意,您只能在窗体上有一个默认按钮 - 所以,如果你让另一个按钮的默认,这个将取消。

取消按钮(Escape键按钮)

类似于以上的默认按钮,当您按下ESC键取消按钮会被选择。

http://s12/middle/001PLqnDzy6IbdfYRmP8b&690

选择 取消按钮,并设置其 Cancel属性设置为当用户按下ESC键,连接到这个按钮的任何代码将会执行。就像默认 按钮,每个窗体也只有一个 取消按钮。

 

这就是这个马拉松式格式化用户窗体学习的结尾。接下来,我们将学习:

  • 如何附加代码到窗体并使他们正常运行
  • 如何创建一些更高级的窗体控件

然而,这些都是独立博客的主题。

*该教材由谷歌翻译,原帖作者为安迪·布朗,本人只是略作校订。原帖网址:(http://www.wiseowl.co.uk/blog/s229/vba-userform.htm)





0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有