VBA Excel 实践(二)Excel窗体事件、方法及Excel窗体属性


引言

本人本次实践的目标是数据查询。具体实现方式应该是:

使用窗体及其他控件做查询的条件的输入
使用excel作为查询结果的输出
从桌面上看应该是,前面一个窗口输入查询条件,然后点确定,后面有个excel显示结果。
类似下图这种
    

一、打开窗口 

窗体俗称对话框,在可视化的面向对象的编程软件中都应该有。在VBA中也有,可以打开 excel->开发工具

 

点开Visual Basic就会进入到变成界面,然后就可以插入窗体,如下图 

 

二、窗体简介

 窗体,也就是窗口,或者叫对话框,是vba定义的一个对象,或者说一类对象。微软对“Microsoft 窗体”对象的介绍就是下面一幅图

 

我们本节所说的”窗体“就是第二层(UserForm)。我们可以从图中看出,窗体对象,不止是指UserForm,还指其他的对象,如Controls,Font,MultiPage,等等。从面向对象的观点来说,这个图表示的应该是一个继承图。(我不是很熟,猜的) 如果上图是个继承关系图,那么我们可以得到几个结论:

他们的事件可以继承
他们的属性也可以继承
且儿子的属性和事件可能比父亲多。。。。
三、窗体属性简介

属性,表示这个窗体固有的特性,如基本的:长宽高,位置,颜色等;特殊的:如字体大小啊,有无滚动条啊等等

所以分下类:

基础属性:外观,位置,字体
名称 窗体名称 该窗体的标识 可能是唯一标识
BackColor
背景色    
BorderColor
边框颜色   只有BorderStyle为1时,这个才有效
BorderStyle
边框类型(两种)
0 fmBorderStyleNone
1 fmBorderStyleSingle
 
Caption
窗体左上角显示的名字    
Height
窗体显示位置-高    
Width
窗体显示位置-宽    
 

 

 

 

 

 

 

 

 行为属性
Cycle
tab顺序指定控件接收焦点的顺序
0 fmCycleAllForms
2 fmCycleCurrentForm
选0时,使用tab键,会遍历所有的该窗体范围内所有的控件;选1时,使用tab键,只会遍历某一窗体范围内的控件,tab不会跳出范围,到最后一个控件后会在回到该窗体范围的第一个控件
showmodal 窗口是否锁死(这个词合适)
true
false
选true叫模态,false叫非模态
模态下,如果这个窗口是激活的,其他窗体或窗口则不能被选中。非模态,反之。
 

 

 

 

 

 

滚动条
ScrollBars
滚动条
0 fmScrollBarsNone
1 fmScrollBarsHorizontal
2 fmScrollBarsVertical
3 fmScrollBarsBoth
0 无
1 水平
2 垂直
3 全部
ScrollHeight
ScrollTop
滚动条高 height有值,top才填值 只有当ScrollHeight值大于窗体本身的height时,滚动条才会显示。这个时候Top表示滚动条离顶部的距离
ScrollWidth
ScrollLeft
滚动条宽 width有值,left才能填值 只有当ScrollWidth值大于,窗体本身的Width时,滚动条才会显示。这个时候left表示滚动条离左侧的距离
 

 

 

 

 

 

 

 

 四、窗体事件、方法简介

 常用事件
Initialize

就是在初始化窗口时,要对窗口干的事情,比如给窗口属性赋值,给窗体内包含的控件赋初始值。

Click

点击窗体时,会干的事情,比如隐藏窗体等等

Terminate

关闭窗体是要干的事情,比如保存文件,关闭excel等

怎么弄出来事件呢?


先在左边选中窗口(对象),右边基本上都是事件。。。每个对象能响应的事件可能是不一样多的

常用方法
move,copy等等呢

怎么弄出来方法呢?
跟你写代码一样,写出这个对象在.一下,后面跟的就是方法和属性

 

一般黑色表示属性,绿色标识方法。

五、Initalize 、click事件示例

下列示例假设程序中已有两个窗体UserForms。在 UserForm1 的Initalize事件中加载 UserForm2 ,并将其显示出来。当用户单击 UserForm2 时,就会将其隐含起来,而 UserForm1 将会出现。而当用户单击 UserForm1 时,UserForm2 便会再次出现。

'这是 UserForm1 的 Initialize 事件过程
Private Sub UserForm_Initialize()
Load UserForm2
UserForm2.Show
End Sub
'这是 UserForm2 的 Click 事件过程
Private Sub UserForm_Click()
UserForm2.Hide
End Sub

' 这是 UserForm1 的 Click 事件
Private Sub UserForm_Click()
UserForm2.Show

————————————————
版权声明:本文为CSDN博主「二流杀手」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/monkeyzh123/java/article/details/88527093


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM