分享

VBA从零学习之16——下拉框与数组

 L罗乐 2017-10-12

  首先公布上期VBA从零学习之15——初识对话框课后作业的答案。

  为了能在文本框内容变动的时候,检查是否输入的内容为数字,我们需要实现TextBox的Change事件。

  代码如下:





接下来,我们进行本期的分享——下拉框与数组

本期的资源已放在网盘中。

链接: https://pan.baidu.com/s/1o8fwIwE

密码: gwrz





下拉框


  下拉框ComboBox,可以提供一系列的数据,让我们在下拉列表中选择。它有一个重要的属性:Style。

  • fmStyleDropDownCombo:允许手动输入,也允许从下拉列表中选择

  • fmStyleDropDownList:不允许手动输入,只允许从下拉列表中选择

‍除此之外,它还有一些常用的属性和方法(方法用粗体显示):

  • Value:默认属性。ComboBox1.Value,一般情况下都可以用ComboBox1来代替

  • List:下拉列表的内容。为一个数组

  • ListCount:下拉列表内容的数量

  • ListIndex:当前内容在下拉列表中的索引行【基于0的索引

  • ListRows:下拉列表的高度(如果下拉内容有5项,下拉列表高度为3,则下拉列表会自动生成滚动条)

  • AddItem:增加一项下拉列表中的内容

  • RemoveItem:移除一项下拉列表中的内容

  • Clear:移除所有下拉列表内容


数组


刚才我们提到了数组,那什么是数组呢?

数组,就是一组数(或一组对象)。

如:1是一个整数,'a'是一个字母,'abc'是一个字符串,Range('A:A')代表A列。

而{1,2,3}就是一组整数,{Range('A1'),Cells(1,2),Range('C1:D2')}是一组Range对象。


它和下拉框有什么关系呢?


下拉框的List属性,是下拉列表的内容,也就是一个数组。

比如,我们在下拉列表中显示性别:男、女。那么这就是一个数组:{男,女}。


定义数组


如何定义数组呢?

我们用

Dim i As Long 定义一个长整数

Dim vStr As String 定义一个字符串

Dim vRan As Range 定义一个Range对象

对应的,我们用

Dim i() As Long 定义一个长整数数组

Dim vStr() As String 定义一个字符串数组

Dim vRan() As Range 定义一个Range对象数组

我们可以用

Dim MyArray() As Variant 定义一个不确定具体内容类型的数组


上面定义数组的方式都没有确定数组的长度,确定长度的方式有两种:

方式1

Dim 性别(1) As String

定义一个上限索引为1的字符串数组。因为数组的索引基于0,所以它可以容纳两个字符串。

方式2

Dim 性别() As String

ReDim 性别(1) '或 ReDim Preserve 性别(1)

这样可以动态改变数组的长度

如果用Preserve的方式,则会保留数组之前的内容;不用Preserve,则会清空原来的数组。


访问数组


我们用一个例子来展示:

Dim 性别(1) As String

性别(0) = '男'

性别(1) = '女'

For i = 0 To UBound(性别) 'UBound(性别)可以得到性别这个数组的上限索引

    MsgBox 性别(i)

Next


使用下拉框与数组

我们在VBA编辑器中,创建如下的对话框:


我们计划实现以下功能:

1、在数值后的文本框中输入数字,在点“更新下拉列表”的按钮时,更新下拉列表的内容。比如,数值输入3,我们在下拉列表中填充10,20,30

2、在选择下拉列表的内容时,更新当前索引和当前内容的Label标签


为实现以下功能,我们需要:

1、实现“更新下拉列表”按钮的事件

2、实现“下拉列表”内容变更的事件


代码如下:


现在,去测试一下结果吧。


课后总结

通过本次分享,你应该具备以下技能:

1、学会使用下拉列表

2、自行研究并掌握下拉列表的常用属性和方法

3、掌握数组的概念

4、学会定义数组、重定义数组


课后作业(窗口布局在网盘链接中有,但还没有编写代码)

我们提到了下拉列表的常用方法中包括AddItem、RemoveItem和Clear,我们希望实现以下的功能:




    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多