手机版

excel图表制作:创建级联列表框

时间:2021-09-27 来源:互联网 编辑:宝哥软件园 浏览:

本文利用excel图表记录集技术创建层叠列表框。

效果如下图1所示。

图1

如上面的图1所示,一组创建的列表框-地区、市场和州可以一起工作。也就是说,如果选择了列表框“区域”中的某个项目,则列表框“市场”和“州”仅显示与所选区域项目相关联的值。同样,在列表框“市场”中选择一个项目,列表框“状态”中将仅显示与“市场”项目中的项目相关联的值。

解决办法

使用ADO记录集为子列表框提取记录,并使用父列表框的值作为条件。在这种情况下,区域和市场都是父列表框,因为它们影响如何提供下一个级别的价值。和市场状态作为子列表框,因为它们的值取决于它们上面的列表框。

在本例中,创建一个函数,接受一个子列表框作为其参数,然后使用该列表框来确定要提取哪些数据以及要填充哪个列表框。

打开VBE,插入标准模块,输入以下代码:

函数级联子对象(作为对象的目标子对象)

将连接模糊为连接

将Myrecordset设为记录集

将我的工作簿设为字符串

将字符串形式的字符串变暗

设置我的连接=新连接

设置Myrecordset=NewRecordset

确定要引用的工作簿。

我的工作簿=应用程序。此工作簿。全名

打开到此工作簿的连接。

我的连接。Open"Provider=Microsoft。Jet . OLEDB.4.0”_”数据源=“我的工作簿”_“extended properties=Excel 8.0;”_“持续安全性信息=假”

确定正确的SQL语句,并将该值用作父列表框中查询的参数。

选择CaseTargetChild。名字

Case Is="lstMarket "

strSQL="从[Sheet1$A1:C40]中选择不同的[市场] AS [tgtField],其中[区域]=' " sheet 1 . lstreature . value " ' "

Case Is=" lstState "

strSQL="从[Sheet1$A1:C40]中选择不同的[状态] AS [tgtField],其中[Market]=' " sheet 1 . 1 Market . value " ' "

结束选择

将查询加载到记录集中。

Myrecordset。打开strSQL,我的连接,一个静态

填写目标子列表框。

使用TargetChild。目标。清楚的

做。AddItemMyrecordset![tgtField]

Myrecordset。移动下一个

循环直到完成。“EOF”会自动选择列表框中的第一个值。值=。列表(0)以结尾

清理我的连接。关闭

设置Myrecordset=无

设置我的连接=无

结束功能

每个父列表框的OnClick事件只是调用上述函数,并将目标子列表框作为函数的参数传递:

私有子市场点击()调用子市场。oil objects(sheet 1 . lsstate . name))End Sub Private Sub lstrage _ Click()调用CascadeChild(ActiveSheet)。油标(图纸1.1市场名称))端接头

解释

1.示例中使用了ActiveX列表框控件。

2.需要在VBE中设置对微软ActiveX数据对象库的引用,如下图2所示。

图2。

版权声明:excel图表制作:创建级联列表框是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。