Excel VBA窗体入门
一、窗体和控件简介什么是窗体?微软是这样解释的:
窗体 窗口或对话框。窗体为控件的容器,多文档接口 (MDI) 窗体可作为子窗体和一些控件的容器。
窗体与控件不同,窗体上可以存放多个控件,在窗体界面直接调用。
打开VBE界面,工程管理器中,右键——插入——用户窗体,即可插入一个用户窗体。插入的窗体名称默认以UserForm开头后带数字,构成默认名称。
选中窗体模块名称,双击可以查看窗体界面,右击可以选择查看该窗体代码。注意:窗体和窗体上的控件代码存放在“用户窗体中”,而非存放在标准模块中。如果代码写在标准模块中,应在窗体代码模块中调用。例如,在标准模块中有过程”sub 显示窗体()”,则应在窗体控件事件中使用以下形式调用: Private Sub CommandButton1_Click() Call 显示窗体 End Sub
以上代码表示单击CommandButton1则调用标准模块中的过程“sub 显示窗体()”。两个窗体间的代码过程并无法相互调用。
相关控件
ALT+F11打开工程管理器中双击窗体名称,可以发现窗体界面和控件工具箱。我们可以点击工具箱上的选择控件,然后在窗体中拖曳即可在窗体中插入相关控件。
工具箱上,除了鼠标箭头外,其他是可以插入的控件,横向分别为标签Label、文字框TextBox、复合框ComboBox、列表框ListBox、复选框CheckBox、选项按钮OptionButton,切换按钮ToggleButton,框架Frame,命令按钮CommandButton,
TabStrip,多页Page,滚动条ScrollBar,旋转按钮(数值)SpinButton,图像Image,RefEdit。
与工作表的集合有Worksheets一样,窗体控件也有集合Controls,不记得的话,可以看看控件工具箱上方的英文,o(∩_∩)o 哈哈。对了,这英文在win7系统下的excel才能看见,XP下看到的是汉字。 窗体中的常用属性:
窗体名(其他控件对象名同)长度不得超过40个字符。 BackColor:用于设置窗体的背景色。 Caption:控件显示的标题文本。 BorderStyle:设置窗体的边框样式。
Enabled:用于设置窗体是否有效。设置为True时,程序运行时窗体可以被操作,即窗体可以响应作用于它的事件,设置为False时,窗体不可以被操作,而且窗体上的对象也不可以进行操作。
Font:设置窗体上文本的字体、字型和字号。 ForeColor:设置窗体上文本和图形的前景色。 Moveable:设置窗体在程序运行时能否被移动。
Left和Top:用于设置程序运行时窗体在屏幕上的位置,Left属性值决定窗体左上角在屏幕上的横坐标,Top属性值决定窗体左上角在屏幕上的的纵坐标。 Height和Width:用于设置程序运行时窗体在屏幕上的大小(高和宽),Height属性值决定窗体的高度,Width属性值决定窗体的宽度。 Picture:用图片填充窗体背景。单击可以选择路径。
ShowModal:模式选择。如果为FALSE,则窗体模式为无模式,此时可以显示窗体并选择单元格和其他窗体;如果为TRUE,则为有模式,无法选择其他窗体和单元格。代码调用模式优于此属性设置。 StartUpPosition:调整窗体出现的位置。 控件属性TabIndex:设置光标跳动顺序。
PasswordChar:TextBox控件中使用符号代替输入的内容,例如用*代替输入的密码。
二、窗体的显示显示窗体的语法:UserFormName.Show
例如:UserForm1.Show就是显示名称为UserForm1的窗体。
窗体显示方式分两种,可以通过ShowModal属性或者代码调用进行设置。
1.有模式:此模式下,只显示本窗体,只能在本窗体使用控件,无法选择其他窗体或者工作表对象。默认ShowModal属性为TRUE,也就是有模式。 2.无模式 无模式下,可以同时显示多个窗体,能在多个窗体间切换(其他窗体也必须是无模式),能自由选择工作表对象,例如复制单元格内容等操作。 3.代码设置显示模式前面我们说过,用UserFormName.Show的方法显示窗体。 如不指定Show的参数,UserForm1.Show调用模式按ShowModal原有属性设置显示窗体模式。
(1)强制使用有模式显示: UserForm1.Show 1 (2)强制使用无模式显示: UserForm1.Show 0
备注:可以使用load UserForm1装载窗体到内存中而不显示。
三、窗体的隐藏要隐藏窗体,可以用Hide,如下代码表示隐藏UserForm1窗体: UserForm1.Hide
也可以通过点击窗体右上方的红色关闭按钮实现。
窗体的卸载:Unload UserForm1,通过Unload从内存中删除窗体,释放窗体所占用的内存空间