VBA Excel 实践(三)Excel控件及Excel控件的初始化

引言

我们还是要回顾下我们要干什么?我们的目标是做一个具有查询及显示查询结果的工具。上一章介绍了窗体及其属性、事件、方法等,这个东西只能算是画个查询条件的框框,里面的具体查询条件怎么填呢。

从我们见过的软件分析,要写一个查询条件的输入,必须有输入框吧,有可能有选择框吧,有可能有多选、单选框吧,你得有确定按钮吧,本章主要描述这些东西及其初始化

一、综述

控件其实也是窗体,是上篇中的窗体的儿子、继承者。目前我们常用的有标签(Lable),文本框(TextBox),复合框(ComboBox),列表框(ListBox),复选框(CheckBox),选项按钮(OptionButton),命令按钮(CommandButton),等等。

因为控件和窗体是继承关系,所以控件的属性和窗体差不多,如位置、大小、字体相关、图片相关、鼠标相关等。但是龙生九子,子子不同,他们又会生出具有各自特点的属性。

二、属性

上面说了,龙生九子,子子不同。所以控件在继承窗体的属性时,不是全部继承,一般都是根据自身的功能去继承父亲的某些特点。同时,儿子也会生出一些自己的共性特点(属性)。

  • 新属性:
textalign 文本对齐方式

1 fmTextAlignLeft

2 fmTextAlignCenter

3 fmTextAlignRight

对于listbox只对编辑框起作用

AutoSize

控件调节自身大小

ture

false

true表示自动调整,当然不同的空间自动调整的含义不同

AutoTab

当用户在文本框或组合框的文本框区域输入了最大允许字符数时,是否自动跳格

ture

false

MaxLength 属性规定了在文本框或组合框的文本框区域内所允许的最大字符数

TabIndex

按tab键时TabIndex表示第几个跳到该控件

整数

 
TabStop TabStop表示按tab键时是否忽略该控件

ture

false

true 表示接受tab

ControlSource

标识用于设置或储存控件中 Value 属性的数据位置。ControlSource 属性可接受 Microsoft Excel 工作表区域

一般写excel单元格 excel单元格和控件对应的value可以互相影响。意思就是你改一个另外一个就会跟着改
ControlTipText

指定当用户将鼠标指针放在控件上但未按下时所显示的文本

   

 

 

 

 

 

 

 

 

 

 

 

 

三、方法

AddItem,RemoveItem方法等

四、控件初始化示例

 对于控件的初始化,我们一般在UserForm的init事件中进行。初始化控件时,可对控件的属性进行赋值。本次示例对checkbox,textbox,listbox,combobox进行了初始化操作,分别进行了:复选框选定初始化,文本框内容初始化,复合框内容初始化,列表框内容初始化。

赋值效果,及代码如下:

  • 效果:

  • 代码: 
Dim MyArray(6, 3)
'文本框初始化:属性赋值
Private Sub testboxinit()
    TextBox1.Text = "TextBox1"
    TextBox1.Enabled = False
    TextBox1.Locked = False
    TextBox2.Text = "TextBox2"
End Sub
'复选框初始化:名称赋值,是否选定
Private Sub checkboxinit()
    CheckBox1.Caption = "Enabled"
    CheckBox1.Value = True
    
    CheckBox2.Caption = "Locked"
    CheckBox2.Value = False
End Sub
'复合框初始化:内容初始赋值
Private Sub comboxinit()
    Dim j As Integer

    For j = 1 To 9
        ComboBox1.AddItem "Choice " & j
    Next j
    ComboBox1.AddItem "Chocoholic"
End Sub
'列表框初始化:内容初始赋值
Private Sub listboxinit()
    Dim i As Single
     '第一个列表框包含三个数据列
    ListBox1.ColumnCount = 3
     '第二个框包含六个数据列
     ListBox2.ColumnCount = 6

    '把整数值加载到 MyArray 的第一列
    For i = 0 To 5
        MyArray(i, 0) = i
    Next i

    '加载 MyArray 的列 2 和列 3
    MyArray(0, 1) = "Zero"
    MyArray(1, 1) = "One"
    MyArray(2, 1) = "Two"
    MyArray(3, 1) = "Three"
    MyArray(4, 1) = "Four"
    MyArray(5, 1) = "Five"

    MyArray(0, 2) = "Zero"
    MyArray(1, 2) = "Un ou Une"
    MyArray(2, 2) = "Deux"
    MyArray(3, 2) = "Trois"
    MyArray(4, 2) = "Quatre"
    MyArray(5, 2) = "Cinq"

    '把数据加载到 ListBox1 和 ListBox2
    ListBox1.List() = MyArray
    ListBox2.Column() = MyArray
End Sub

Private Sub UserForm_Initialize()
    
    Call testboxinit
    Call comboxinit
    Call listboxinit
    Call checkboxinit
   
End Sub

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章