excel图表制作:创建级联列表框
本文利用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或者邮箱删除。