excelVBA如何能将筛选地结果负给ACTIVEX组合框.docx

上传人:b****8 文档编号:28448176 上传时间:2023-07-13 格式:DOCX 页数:25 大小:91.08KB
下载 相关 举报
excelVBA如何能将筛选地结果负给ACTIVEX组合框.docx_第1页
第1页 / 共25页
excelVBA如何能将筛选地结果负给ACTIVEX组合框.docx_第2页
第2页 / 共25页
excelVBA如何能将筛选地结果负给ACTIVEX组合框.docx_第3页
第3页 / 共25页
excelVBA如何能将筛选地结果负给ACTIVEX组合框.docx_第4页
第4页 / 共25页
excelVBA如何能将筛选地结果负给ACTIVEX组合框.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

excelVBA如何能将筛选地结果负给ACTIVEX组合框.docx

《excelVBA如何能将筛选地结果负给ACTIVEX组合框.docx》由会员分享,可在线阅读,更多相关《excelVBA如何能将筛选地结果负给ACTIVEX组合框.docx(25页珍藏版)》请在冰豆网上搜索。

excelVBA如何能将筛选地结果负给ACTIVEX组合框.docx

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 

精华

积分

24951 

威望

551 

金钱

3855 

人气

106 

阅读权限

200 

来自

浙江省瑞安市 

在线时间

2105小时 

注册时间

2006-5-18 

最后登录

2010-4-23 

院士

帖子

3603 

精华

威望

551 

擂点

人气

106 

注册时间

2006-5-18 

2楼

发表于2009-11-1308:

24|只看该作者

组合框是什么框啊?

大菜鸟一个。

回复引用

TOP

cwa9958

∙发短消息

MSN聊天

∙加为好友

cwa9958当前在线

UID

83182 

帖子

3603 

精华

积分

24951 

威望

551 

金钱

3855 

人气

106 

阅读权限

200 

来自

浙江省瑞安市 

在线时间

2105小时 

注册时间

2006-5-18 

最后登录

2010-4-23 

院士

帖子

3603 

精华

威望

551 

擂点

人气

106 

注册时间

2006-5-18 

3楼

发表于2009-11-1308:

25|只看该作者

导出excel里的数据有两种方法:

1用excel对象

2用ado

大菜鸟一个。

新手帮助如何获得阅读权限

回复引用

TOP

我来注册

∙发短消息

∙加为好友

我来注册当前离线

UID

93077 

帖子

67 

精华

积分

455 

威望

金钱

85 

人气

阅读权限

20 

在线时间

37小时 

注册时间

2006-10-27 

最后登录

2010-1-28 

新手

帖子

67 

精华

威望

擂点

人气

注册时间

2006-10-27 

4楼

发表于2009-11-1310:

16|只看该作者

3#cwa9958

哦,excel对象知道了,不清楚ado是怎么引用的?

请教一下。

新手帮助如何获得阅读权限

回复引用

TOP

zhengchun

∙发短消息

∙加为好友

zhengchun当前离线

UID

86764 

帖子

128 

精华

积分

857 

威望

金钱

161 

人气

阅读权限

20 

在线时间

69小时 

注册时间

2006-7-16 

最后登录

2010-4-22 

研究生

帖子

128 

精华

威望

擂点

人气

注册时间

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 

精华

积分

24951 

威望

551 

金钱

3855 

人气

106 

阅读权限

200 

来自

浙江省瑞安市 

在线时间

2105小时 

注册时间

2006-5-18 

最后登录

2010-4-23 

院士

帖子

3603 

精华

威望

551 

擂点

人气

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 

精华

积分

24951 

威望

551 

金钱

3855 

人气

106 

阅读权限

200 

来自

浙江省瑞安市 

在线时间

2105小时 

注册时间

2006-5-18 

最后登录

2010-4-23 

院士

帖子

3603 

精华

威望

551 

擂点

人气

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列数据的有效性就不会出现此提示了。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 教学研究 > 教学案例设计

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1