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

引言

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

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

    

一、打开窗口 

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

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

二、窗体简介

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

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

  1. 他们的事件可以继承
  2. 他们的属性也可以继承
  3. 且儿子的属性和事件可能比父亲多。。。。

三、窗体属性简介

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

所以分下类:

  • 基础属性:外观,位置,字体
名称窗体名称该窗体的标识可能是唯一标识

BackColor

背景色  

BorderColor

边框颜色 只有BorderStyle为1时,这个才有效

BorderStyle

边框类型(两种)

0 fmBorderStyleNone

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
End Sub

 

  • 5
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值