excelVBA如何能将筛选地结果负给ACTIVEX组合框.docx
- 文档编号:28448176
- 上传时间:2023-07-13
- 格式:DOCX
- 页数:25
- 大小:91.08KB
excelVBA如何能将筛选地结果负给ACTIVEX组合框.docx
《excelVBA如何能将筛选地结果负给ACTIVEX组合框.docx》由会员分享,可在线阅读,更多相关《excelVBA如何能将筛选地结果负给ACTIVEX组合框.docx(25页珍藏版)》请在冰豆网上搜索。
excelVBA如何能将筛选地结果负给ACTIVEX组合框
excelVBA如何将筛选的结果负给ACTIVEX组合框
65
[ 标签:
excel筛选,excel,vba ]
在线等,急!
!
!
!
在UserForm1中,
姓名组合框内容来自姓名!
A2到最后一行不为空的单元格。
选项1组合框内容来自选项!
A2到最后一行不为空的单元格。
选项2组合框内容来自选项!
选项B2到最后一行不为空的单元格。
其含义决定了,当选项1组合框选定一个类时,选项2组合框只能选择这个类的相关的内容,比如:
选项1组合框选择:
类B那么选项2组合框就只有可能选择:
类B1、类B2。
所以,希望选项2组合框的内容是经过筛选的结果,条件是选项表!
B中前2字符和选项1组合框选择的内容相同。
请问如何实现?
我有附件,如果觉得说得不清楚的话,可以说一下邮箱,我把附件发来。
在线等……,谢谢了啊
`达达龙回答:
4人气:
11解决时间:
2009-09-0615:
25
满意答案
好评率:
0%
组合框是不是combobox?
是不是要类联动?
建userform1,两个表,名称分别为姓名选项。
拖三个combobox控件分别为ComboBox1,ComboBox2,ComboBox3
复制下列代码。
PrivateSubComboBox1_Change()
ComboBox2.Clear
h=ComboBox1.Value
Fora=1To100
g=VBA.Left(Sheets("选项").Cells(a,2),2)
Ifg=hThen
d=Sheets("选项").Cells(a,2)
ComboBox2.AddItemd
EndIf
Nexta
EndSub
PrivateSubUserForm_Initialize()
DimaAsInteger
i=1
c=WorksheetFunction.CountA(Sheets("选项").Range("a:
a"))
Fora=1To99
i=i+1
b=Sheets("选项").Cells(i,1)
f=Sheets("姓名").Cells(i,1)
Ifb<>""Then
ComboBox1.AddItemb
ComboBox3.AddItemf
EndIf
Nexta
EndSub
------------------------------------------------------------------------------
评价答案
∙您已经评价过!
好:
0
∙您已经评价过!
一般:
0
∙您已经评价过!
不好:
0
∙您已经评价过!
原创:
0
∙您已经评价过!
非原创:
0
Dionysus
回答采纳率:
64.3%2009-09-0410:
47
`达达龙的感言:
谢谢大家
满意答案
好评率:
0%
选项表内容
窗体设计如下:
代码如下:
PrivateSubComboBox1_Change()
Worksheets("Sheet1").Columns("J:
J").Clear
Worksheets("Sheet1").Range("H1").Value=Worksheets("Sheet1").Range("B1").Value
Worksheets("Sheet1").Range("H2").Value=ComboBox1.Text&"-"
Worksheets("Sheet1").Columns("B:
B").AdvancedFilterAction:
=xlFilterCopy,CriteriaRange:
=Range(_
"H1:
H2"),CopyToRange:
=Columns("J:
J"),Unique:
=False
ComboBox2.RowSource=Worksheets("Sheet1").Range("J2:
J"&Worksheets("Sheet1").Columns("J:
J").End(xlDown).Row).Address
EndSub
PrivateSubUserForm_Activate()
ComboBox1.RowSource=Worksheets("Sheet1").Range("A2:
A"&Worksheets("Sheet1").Columns("A:
A").End(xlDown).Row).Address
ComboBox2.RowSource=""
EndSub
回答人的补充 2009-09-0521:
35
为了不出现选择"A1",子列表出现"A11"此类情况,所以用"-"隔开。
评价答案
∙您已经评价过!
好:
0
∙您已经评价过!
一般:
0
∙您已经评价过!
不好:
0
∙您已经评价过!
原创:
0
∙您已经评价过!
非原创:
0
空白回答采纳率:
37.5%2009-09-0521:
28
我有更好的回答
收藏
转载到QQ空间
相关内容
∙•ExcelVBA程序开发、对组合框进行赋值的程序应该写在什么事件中2个回答
∙
excel教程
∙excel表格制作教程
∙excel函数
∙excel函数公式大全
∙excel表格
∙excel表格制作
∙excel表格计算公式
∙excel求和
其他答案
你的这个要求用数据有效性完全可以实现
提问人的追问 2009-09-0413:
15
请看清楚我的问题,是如何实现,不是可不可以实现……
不负责任的回答还是不到的好,浪费你我的时间
**芳^-^回答采纳率:
15.8%2009-09-0400:
47
PrivateSubUserForm_Initialize()
DimiAsInteger
WithSheet("姓名")
Fori=2To.Range("A65536").End(xlUp).Row
姓名.AddItem.Cells(i,1).Value
Next
EndWith
DimcAsNewCollection
OnErrorResumeNext
DimsAsString
WithSheets("选项")
Fori=2To.Range("A65536").End(xlUp).Row
s=.Cells(i,1).Value
c.Adds,"k"&s
Next
EndWith
OnErrorGoTo0
Fori=1Toc.Count
选项1.AddItemc(i)
Next
EndSub
PrivateSub选项1_Click()
DimiAsInteger
DimsAsString
s=选项1.Text
WithSheets("姓名")
Fori=2To.Range("B65536").End(xlUp).Row
If.Cells(i,1).Value=sThen
选项2.AddItem.Cells(i,2).Value
EndIf
Next
EndWith
EndSub
Chenxf回答采纳率:
21.0%2009-09-0409:
38
如何把Excel表格中的数据导入到组合框中?
Excel,表格,数据
如何把Excel表格中的数据导入到组合框中?
如附件Book1.xls中Sheet1中第一列(A列)数据为“苹果”、“梨”;第二列(B列)数据为“白菜”、“萝卜”。
若想实现本帖功能,应该如何做?
谢谢!
附件:
您所在的用户组无法下载或查看附件
收藏分享评分
回复引用
订阅TOP
cwa9958
∙发短消息
∙
MSN聊天
∙加为好友
cwa9958当前在线
UID
83182
帖子
3603
精华
0
积分
24951
威望
551
金钱
3855
人气
106
阅读权限
200
来自
浙江省瑞安市
在线时间
2105小时
注册时间
2006-5-18
最后登录
2010-4-23
院士
帖子
3603
精华
0
威望
551
擂点
0
人气
106
注册时间
2006-5-18
2楼
发表于2009-11-1308:
24|只看该作者
组合框是什么框啊?
大菜鸟一个。
。
。
回复引用
TOP
cwa9958
∙发短消息
∙
MSN聊天
∙加为好友
cwa9958当前在线
UID
83182
帖子
3603
精华
0
积分
24951
威望
551
金钱
3855
人气
106
阅读权限
200
来自
浙江省瑞安市
在线时间
2105小时
注册时间
2006-5-18
最后登录
2010-4-23
院士
帖子
3603
精华
0
威望
551
擂点
0
人气
106
注册时间
2006-5-18
3楼
发表于2009-11-1308:
25|只看该作者
导出excel里的数据有两种方法:
1用excel对象
2用ado
大菜鸟一个。
。
。
新手帮助如何获得阅读权限
回复引用
TOP
我来注册
∙发短消息
∙加为好友
我来注册当前离线
UID
93077
帖子
67
精华
0
积分
455
威望
0
金钱
85
人气
0
阅读权限
20
在线时间
37小时
注册时间
2006-10-27
最后登录
2010-1-28
新手
帖子
67
精华
0
威望
0
擂点
0
人气
0
注册时间
2006-10-27
4楼
发表于2009-11-1310:
16|只看该作者
3#cwa9958
哦,excel对象知道了,不清楚ado是怎么引用的?
请教一下。
新手帮助如何获得阅读权限
回复引用
TOP
zhengchun
∙发短消息
∙加为好友
zhengchun当前离线
UID
86764
帖子
128
精华
0
积分
857
威望
0
金钱
161
人气
0
阅读权限
20
在线时间
69小时
注册时间
2006-7-16
最后登录
2010-4-22
研究生
帖子
128
精华
0
威望
0
擂点
0
人气
0
注册时间
2006-7-16
5楼
发表于2009-11-1320:
04|只看该作者
直接导进就是了
Combo1.AddItemxlssheet.Cells(1,1)
Combo1.AddItemxlssheet.Cells(1,2)
等,就是挺麻烦,不知道有没有简洁点的?
最新一期擂台题目出来了!
回复引用
TOP
cwa9958
∙发短消息
∙
MSN聊天
∙加为好友
cwa9958当前在线
UID
83182
帖子
3603
精华
0
积分
24951
威望
551
金钱
3855
人气
106
阅读权限
200
来自
浙江省瑞安市
在线时间
2105小时
注册时间
2006-5-18
最后登录
2010-4-23
院士
帖子
3603
精华
0
威望
551
擂点
0
人气
106
注册时间
2006-5-18
6楼
发表于2009-11-1411:
24|只看该作者
ado要先引用ado对象
excel表的第一行要有字段名字
PrivateSubCommand3_Click()
DimConnAsNewADODB.Connection
DimrsAsNewADODB.Recordset
DimiAsInteger
DimsqlAsString
'OnErrorResumeNext
strName=App.Path&"\book1.xls"'EXCEL文件名
strSheetName="sheet1"'EXCEL表名
Conn.Open"
rovider=Microsoft.Jet.OLEDB.4.0
ersistSecurityInfo=False;DataSource="&strName&";ExtendedProperties='Excel8.0;HDR=Yes'"'连接EXCEL文件
sql="select*from["&strSheetName&"$]"'打开EXCEL表
rs.Opensql,Conn,3,3
MsgBoxrs.RecordCount '显示表里的记录数
DoUntilrs.EOF
List1.AddItemrs.Fields(0) '读出数据,添加到list1里
rs.MoveNext
Loop
rs.Close '关闭数据集
Conn.Close '关闭对象
EndSub
大菜鸟一个。
。
。
最新一期擂台题目出来了!
回复引用
TOP
cwa9958
∙发短消息
∙
MSN聊天
∙加为好友
cwa9958当前在线
UID
83182
帖子
3603
精华
0
积分
24951
威望
551
金钱
3855
人气
106
阅读权限
200
来自
浙江省瑞安市
在线时间
2105小时
注册时间
2006-5-18
最后登录
2010-4-23
院士
帖子
3603
精华
0
威望
551
擂点
0
人气
106
注册时间
2006-5-18
7楼
发表于2009-11-1411:
26|只看该作者
ado要先引用ado对象
excel表的第一行要有字段名字
PrivateSubCommand3_Click()
DimConnAsNewADODB.Connection
DimrsAsNewADODB.Recordset
DimiAsInteger
DimsqlAsString
'OnErrorResumeNext
strName=App.Path&"\book1.xls"'EXCEL文件名
strSheetName="sheet1"'EXCEL表名
Conn.Open"
rovider=Microsoft.Jet.OLEDB.4.0
ersistSecurityInfo=False;DataSource="&strName&";ExtendedProperties='Excel8.0;HDR=Yes'"'连接EXCEL文件
sql="select*from["&strSheetName&"$]"'打开EXCEL表
rs.Opensql,Conn,3,3
MsgBoxrs.RecordCount '显示表里的记录数
DoUntilrs.EOF
List1.AddItemrs.Fields(0) '读出数据,添加到list1里
rs.MoveNext
Loop
rs.Close '关闭数据集
Conn.Close '关闭对象
EndSub
大菜鸟一个。
。
。
目的:
查找某个学科的名称(strName)来查找其上一级学科的代码
'输入:
某学科的名称、上一级学科所在的表名及其行数
'输出:
上一级学科的代码
PrivateFunctionFindCode(strNameAsString,shtTableAsWorksheet,nRowNumAsInteger)AsString
DimnRowAsInteger'上一级学科的所在的行号
DimiAsInteger
Fori=1TonRowNum'查找strName的上级学科所在表中的行号
IfshtTable.Range("b"&i).Value=strNameThen
nRow=i
ExitFor
EndIf
Nexti
FindCode=shtTable.Range("a"&nRow)'获取stName的上级学科的代码
EndFunction
PrivateSubcboThird_Change()
EndSub
'目的:
第三级学科下拉框的下拉按钮按下时,显示与第二级学科对应的所有第三级学科
PrivateSubcboThird_DropButtonClick()
DimstrCodeAsString
DimiAsInteger
strCode=FindCode(Me.ComboBox2.Text,Sheet3,693)'获取第二级学科的代码
Fori=1To2391'查找与第二级学科对应的第三级学科,并把其名称加到列表框中
IfstrCode=Left(Sheet4.Range("a"&i).Value,5)Then
Me.cboThird.AddItem(Sheet4.Range("b"&i).Value)
EndIf
Nexti
IfcboThird.ListCount=0Then'若没有三级学科,则显示“无三级学科”
cboThird.AddItem("无三级学科")
EndIf
EndSub
PrivateSubComboBox1_Change()
Sheet1.Range("h14").Value=Me.ComboBox1.Text'在表中与第一级学科相对应的单元格获取第一级学科列表框的值
Me.ComboBox2.Clear'第一级学科的值发生变化,第二级学科的列表也要更新
EndSub
PrivateSubComboBox1_DropButtonClick()
Me.ComboBox1.List=Sheet2.Range("b1:
b58").Value'第一级学科列表加载所有一级学科的名称
EndSub
PrivateSubComboBox2_Change()
cboThird.Clear'第三级学科列表要更新
EndSub
'目的:
第二级学科下拉框的下拉按钮按下时,显示与第一级学科对应的所有第二级学科
PrivateSubComboBox2_DropButtonClick()
DimstrCodeAsString
DimiAsInteger
strCode=FindCode(Me.ComboBox1.Text,Sheet2,58)'获取第一级学科的代码
Fori=1To693'查找与第一级学科对应的第二级学科,并把其名称加到列表框中
IfstrCode=Left(Sheet3.Range("a"&i).Value,3)Then
Me.ComboBox2.AddItem(Sheet3.Range("b"&i).Value)
EndIf
Nexti
EndSub
Excel中级联菜单的实现
减小字体
增大字体
大家知道,在Excel中可以通过设置数据的有效性来实现类似于网页表单中的下拉菜单功能,这样可以大大地提高数据的录入速度和可靠性。
但采用此方法要求下拉菜单中的选项不能过多,否则会影响录入的速度。
如果这些选项内容之间可进行分类、分组,那我们就可以用多个下拉选项(即级联菜单)来解决此类问题。
下面我们就从一个实例出发,给出在Excel中实现级联菜单的两种方法,希望能给使用Excel进行办公的朋友提供帮助。
一、自定义数据的有效性
这里有两个工作表,其中Sheet1用来采集客户资料,并将其名称改为“客户数据采集”,在Sheet2的A列中保存了所有的省份,B列中的数据为各省份所属的县市并将工作表名称改为“地区”(假设这里设置了三个省份,即江苏省、浙江省和安徽省)。
1.定义单元格区域名称
选中“地区”表中江苏省所属县市的单元格区域B2∶B14,依次单击“插入”菜单中的“名称”,选择“定义”,弹出“定义名称”对话框,在“在当前工作簿中的名称”框中输入所定义的名称“江苏”,单击“确定”按钮。
类似地,我们可以将浙江省和安徽省所属县市的单元格区域名称分别定义为“浙江”和“安徽”。
2.设置数据的有效性
切换到“用户数据采集”表中,选择要选择输入省份的D列,单击“数据”菜单中的“有效性”命令,弹出设置“数据有效性”对话框,在有效性条件的“允许”列表中选择“序列”,在“来源”框中输入“江苏,浙江,安徽”(分隔符为英文状态下的逗号),单击“确定”按钮。
接下来选中“所属县市”所在的E列,再次打开“数据有效性”对话框,在有效性条件的“允许”列表中选择“序列”,在“来源”框中输入公式“=INDIRECT(D2)”,单击“确定”按钮。
Cico提示:
在关闭设置E列数据有效性对话框时,如系统弹出警告提示“源目前包含错误,是否继续?
”,只需确认就可以了。
如果指定的D2单元格中已经选择了一个省份再设置E列数据的有效性就不会出现此提示了。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- excelVBA 如何 筛选 结果 ACTIVEX 组合