excel VBA 如何将筛选的结果负给ACTIVEX组合框.doc_第1页
excel VBA 如何将筛选的结果负给ACTIVEX组合框.doc_第2页
excel VBA 如何将筛选的结果负给ACTIVEX组合框.doc_第3页
excel VBA 如何将筛选的结果负给ACTIVEX组合框.doc_第4页
excel VBA 如何将筛选的结果负给ACTIVEX组合框.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

excel VBA 如何将筛选的结果负给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-06 15:25 满意答案好评率:0% 组合框是不是combobox? 是不是要类联动?建userform1 ,两个表,名称分别为 姓名 选项。拖三个combobox控件分别为ComboBox1,ComboBox2,ComboBox3复制下列代码。Private Sub ComboBox1_Change()ComboBox2.Clearh = ComboBox1.ValueFor a = 1 To 100g = VBA.Left(Sheets(选项).Cells(a, 2), 2)If g = h Thend = Sheets(选项).Cells(a, 2)ComboBox2.AddItem dEnd IfNext aEnd SubPrivate Sub UserForm_Initialize()Dim a As Integeri = 1c = WorksheetFunction.CountA(Sheets(选项).Range(a:a)For a = 1 To 99i = i + 1b = Sheets(选项).Cells(i, 1)f = Sheets(姓名).Cells(i, 1)If b ThenComboBox1.AddItem bComboBox3.AddItem fEnd IfNext aEnd Sub-评价答案 您已经评价过!好:0 您已经评价过!一般:0 您已经评价过!不好:0 您已经评价过!原创:0 您已经评价过!非原创:0 Dionysus 回答采纳率:64.3% 2009-09-04 10:47 达达龙的感言: 谢谢大家 满意答案好评率:0% 选项表内容窗体设计如下:代码如下:Private Sub ComboBox1_Change()Worksheets(Sheet1).Columns(J:J).ClearWorksheets(Sheet1).Range(H1).Value = Worksheets(Sheet1).Range(B1).ValueWorksheets(Sheet1).Range(H2).Value = ComboBox1.Text & -Worksheets(Sheet1).Columns(B:B).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _H1:H2), CopyToRange:=Columns(J:J), Unique:=FalseComboBox2.RowSource = Worksheets(Sheet1).Range(J2:J & Worksheets(Sheet1).Columns(J:J).End(xlDown).Row).AddressEnd SubPrivate Sub UserForm_Activate()ComboBox1.RowSource = Worksheets(Sheet1).Range(A2:A & Worksheets(Sheet1).Columns(A:A).End(xlDown).Row).AddressComboBox2.RowSource = End Sub回答人的补充 2009-09-05 21:35 为了不出现选择A1,子列表出现A11此类情况,所以用-隔开。评价答案 您已经评价过!好:0 您已经评价过!一般:0 您已经评价过!不好:0 您已经评价过!原创:0 您已经评价过!非原创:0 空白 回答采纳率:37.5% 2009-09-05 21:28 我有更好的回答 收藏 转载到QQ空间 相关内容 Excel VBA程序开发、对组合框进行赋值的程序应该写在什么事件中2个回答 excel教程 excel表格制作教程 excel函数 excel函数公式大全 excel表格 excel表格制作 excel表格计算公式 excel 求和 其他答案你的这个要求用数据有效性完全可以实现提问人的追问 2009-09-04 13:15 请看清楚我的问题,是如何实现,不是可不可以实现不负责任的回答还是不到的好,浪费你我的时间*芳- 回答采纳率:15.8% 2009-09-04 00:47 Private Sub UserForm_Initialize()Dim i As IntegerWith Sheet(姓名)For i = 2 To .Range(A65536).End(xlUp).Row姓名.AddItem .Cells(i, 1).ValueNextEnd WithDim c As New CollectionOn Error Resume NextDim s As StringWith Sheets(选项)For i = 2 To .Range(A65536).End(xlUp).Rows = .Cells(i, 1).Valuec.Add s, k & sNextEnd WithOn Error GoTo 0For i = 1 To c.Count选项1.AddItem c(i)NextEnd SubPrivate Sub 选项1_Click()Dim i As IntegerDim s As Strings = 选项1.TextWith Sheets(姓名)For i = 2 To .Range(B65536).End(xlUp).RowIf .Cells(i, 1).Value = s Then选项2.AddItem .Cells(i, 2).ValueEnd IfNextEnd WithEnd SubChenxf 回答采纳率:21.0% 2009-09-04 09:38 如何把Excel表格中的数据导入到组合框中?Excel, 表格, 数据如何把Excel表格中的数据导入到组合框中?如附件Book1.xls中Sheet1中第一列(A列)数据为“苹果”、“梨”;第二列(B列)数据为“白菜”、“萝卜”。若想实现本帖功能,应该如何做?谢谢!附件: 您所在的用户组无法下载或查看附件收藏 分享 评分 回复 引用 订阅 TOP cwa9958 发短消息 MSN 聊天 加为好友 cwa9958 当前在线 UID83182帖子3603精华0积分24951威望551 金钱3855 人气106 阅读权限200来自浙江省瑞安市在线时间2105 小时注册时间2006-5-18最后登录2010-4-23院士帖子3603精华0威望551 擂点0 人气106 注册时间2006-5-182楼 发表于 2009-11-13 08:24 | 只看该作者 组合框是什么框啊?大菜鸟一个。回复 引用 TOP cwa9958 发短消息 MSN 聊天 加为好友 cwa9958 当前在线 UID83182帖子3603精华0积分24951威望551 金钱3855 人气106 阅读权限200来自浙江省瑞安市在线时间2105 小时注册时间2006-5-18最后登录2010-4-23院士帖子3603精华0威望551 擂点0 人气106 注册时间2006-5-183楼 发表于 2009-11-13 08:25 | 只看该作者 导出excel里的数据有两种方法:1 用excel对象2 用ado大菜鸟一个。新手帮助 如何获得阅读权限回复 引用 TOP 我来注册 发短消息 加为好友 我来注册 当前离线 UID93077帖子67精华0积分455威望0 金钱85 人气0 阅读权限20在线时间37 小时注册时间2006-10-27最后登录2010-1-28新手帖子67精华0威望0 擂点0 人气0 注册时间2006-10-274楼 发表于 2009-11-13 10:16 | 只看该作者 3# cwa9958 哦,excel对象知道了,不清楚ado是怎么引用的?请教一下。新手帮助 如何获得阅读权限回复 引用 TOP zhengchun 发短消息 加为好友 zhengchun 当前离线 UID86764帖子128精华0积分857威望0 金钱161 人气0 阅读权限20在线时间69 小时注册时间2006-7-16最后登录2010-4-22研究生帖子128精华0威望0 擂点0 人气0 注册时间2006-7-165楼 发表于 2009-11-13 20:04 | 只看该作者 直接导进就是了Combo1.AddItem xlssheet.Cells(1, 1)Combo1.AddItem xlssheet.Cells(1, 2)等,就是挺麻烦,不知道有没有简洁点的?最新一期擂台题目出来了!回复 引用 TOP cwa9958 发短消息 MSN 聊天 加为好友 cwa9958 当前在线 UID83182帖子3603精华0积分24951威望551 金钱3855 人气106 阅读权限200来自浙江省瑞安市在线时间2105 小时注册时间2006-5-18最后登录2010-4-23院士帖子3603精华0威望551 擂点0 人气106 注册时间2006-5-186楼 发表于 2009-11-14 11:24 | 只看该作者 ado要先引用ado对象excel表的第一行要有字段名字Private Sub Command3_Click()Dim Conn As New ADODB.ConnectionDim rs As New ADODB.RecordsetDim i As IntegerDim sql As StringOn Error Resume NextstrName = App.Path & book1.xls EXCEL文件名strSheetName = sheet1 EXCEL表名Conn.Open rovider=Microsoft.Jet.OLEDB.4.0ersist Security Info=False;Data Source= & strName & ;Extended Properties=Excel 8.0;HDR=Yes 连接EXCEL文件sql = select * from & strSheetName & $ 打开EXCEL表rs.Open sql, Conn, 3, 3MsgBox rs.RecordCount 显示表里的记录数Do Until rs.EOF List1.AddItem rs.Fields(0) 读出数据,添加到list1里 rs.MoveNextLooprs.Close 关闭数据集Conn.Close 关闭对象End Sub大菜鸟一个。最新一期擂台题目出来了!回复 引用 TOP cwa9958 发短消息 MSN 聊天 加为好友 cwa9958 当前在线 UID83182帖子3603精华0积分24951威望551 金钱3855 人气106 阅读权限200来自浙江省瑞安市在线时间2105 小时注册时间2006-5-18最后登录2010-4-23院士帖子3603精华0威望551 擂点0 人气106 注册时间2006-5-187楼 发表于 2009-11-14 11:26 | 只看该作者 ado要先引用ado对象excel表的第一行要有字段名字Private Sub Command3_Click()Dim Conn As New ADODB.ConnectionDim rs As New ADODB.RecordsetDim i As IntegerDim sql As StringOn Error Resume NextstrName = App.Path & book1.xls EXCEL文件名strSheetName = sheet1 EXCEL表名Conn.Open rovider=Microsoft.Jet.OLEDB.4.0ersist Security Info=False;Data Source= & strName & ;Extended Properties=Excel 8.0;HDR=Yes 连接EXCEL文件sql = select * from & strSheetName & $ 打开EXCEL表rs.Open sql, Conn, 3, 3MsgBox rs.RecordCount 显示表里的记录数Do Until rs.EOF List1.AddItem rs.Fields(0) 读出数据,添加到list1里 rs.MoveNextLooprs.Close 关闭数据集Conn.Close 关闭对象End Sub大菜鸟一个。目的:查找某个学科的名称(strName)来查找其上一级学科的代码输入:某学科的名称、上一级学科所在的表名及其行数输出:上一级学科的代码Private Function FindCode(strName As String, shtTable As Worksheet, nRowNum As Integer) As String Dim nRow As Integer 上一级学科的所在的行号 Dim i As Integer For i = 1 To nRowNum 查找strName的上级学科所在表中的行号 If shtTable.Range(b & i).Value = strName Then nRow = i Exit For End If Next i FindCode = shtTable.Range(a & nRow) 获取stName的上级学科的代码End FunctionPrivate Sub cboThird_Change()End Sub目的:第三级学科下拉框的下拉按钮按下时,显示与第二级学科对应的所有第三级学科Private Sub cboThird_DropButtonClick() Dim strCode As String Dim i As Integer strCode = FindCode(Me.ComboBox2.Text, Sheet3, 693) 获取第二级学科的代码 For i = 1 To 2391 查找与第二级学科对应的第三级学科,并把其名称加到列表框中 If strCode = Left(Sheet4.Range(a & i).Value, 5) Then Me.cboThird.AddItem (Sheet4.Range(b & i).Value) End If Next i If cboThird.ListCount = 0 Then 若没有三级学科,则显示“无三级学科” cboThird.AddItem (无三级学科) End IfEnd SubPrivate Sub ComboBox1_Change() Sheet1.Range(h14).Value = Me.ComboBox1.Text 在表中与第一级学科相对应的单元格获取第一级学科列表框的值 Me.ComboBox2.Clear 第一级学科的值发生变化,第二级学科的列表也要更新End SubPrivate Sub ComboBox1_DropButtonClick() Me.ComboBox1.List = Sheet2.Range(b1:b58).Value 第一级学科列表加载所有一级学科的名称End SubPrivate Sub ComboBox2_Change() cboThird.Clear 第三级学科列表要更新End Sub目的:第二级学科下拉框的下拉按钮按下时,显示与第一级学科对应的所有第二级学科Private Sub ComboBox2_DropButtonClick() Dim strCode As String Dim i As Integer strCode = FindCode(Me.ComboBox1.Text, Sheet2, 58) 获取第一级学科的代码 For i = 1 To 693 查找与第一级学科对应的第二级学科,并把其名称加到列表框中 If strCode = Left(Sheet3.Range(a & i).Value, 3) Then Me.ComboBox2.AddItem (Sheet3.Range(b & i).Value) End If Next iEnd SubExcel中级联菜单的实现减小字体 增大字体 大家知道,在Excel中可以通过设置数据的有效性来实现类似于网页表单中的下拉菜单功能,这样可以大大地提高数据的录入速度和可靠性。但采用此方法要求下拉菜单中的选项不能过多,否则会影响录入的速度。如果这些选项内容之间可进行分类、分组,那我们就可以用多个下拉选项(即级联菜单)来解决此类问题。下面我们就从一个实例出发,给出在Excel中实现级联菜单的两种方法,希望能给使用Excel进行办公的朋友提供帮助。一、自定义数据的有效性这里有两个工作表,其中Sheet1用来采集客户资料,并将其名称改为“客户数据采集”,在Sheet2的A列中保存了所有的省份, B列中的数据为各省份所属的县市并将工作表名称改为“地区”(假设这里设置了三个省份,即江苏省、浙江省和安徽省)。1定义单元格区域名称选中“地区”表中江苏省所属县市的单元格区域B2B14,依次单击“插入”菜单中的“名称”,选择“定义”,弹出“定义名称”对话框,在“在当前工作簿中的名称”框中输入所定义的名称“江苏”,单击“确定”按钮。类似地,我们可以将浙江省和安徽省所属县市的单元格区域名称分别定义为“浙江”和“安徽”。2设置数据的有效性切换到“用户数据采集”表中,选择要选择输入省份的D列,单击“数据”菜单中的“有效性”命令,弹出设置“数据有效性”对话框,在有效性条件的“允许”列表中选择“序列”,在“来源”框中输入“江苏,浙江,安徽”(分隔符为英文状态下的逗号),单击“确定”按钮。接下来选中“所属县市”所在的E列,再次打开“数据有效性”对话框,在有效性条件的“允许”列表中选择“序列”,在“来源”框中输入公式“=INDIRECT(D2)”,单击“确定”按钮。Cico提示:在关闭设置E列数据有效性对话框时,如系统弹出警告提示“源目前包含错误,是否继续?”,只需确认就可以了。如果指定的D2单元格中已经选择了一个省份再设置E列数据的有效性就不会出现此提示了。3 数据录入录入客户资料时,首先选择客户所在的省份,然后再打开其右侧“所属县市”所在的单元格时,我们就可以从下拉菜单中找到我们所需的选项了。二、用组合框工具实现该方法是借助控件工具箱和VBA代码来实现的。1 设计组合框在工作表Sheet1中我们借助“控件工具箱”设计了录入界面,将工作表名称改为“客户数据采集”,在采集客户的所属地区时我们设计了两个组合框,第一个组合框ComboBox1用来存放省份,第二个组合ComboBox2用来存放对应于第一个组合框的下属的县市。Sheet2(“地区”表)仍保留和原来一样的内容。2编写组合框事件代码双击“客户数据采集”表中的组合框ComboBox1,进入VBE编辑器,在代码窗口中输入其GotFocus事件代码:Private Sub ComboBox1_GotFocus( )清除组合框中的数值ComboBox1.ClearComboBox2.Clear读出地区表A列中的不同省份并将其添加到组合框1中For i = 2 To Sheet2.a1.End(xlDown).Rowtarget = Sheet2.Cells(i, 1)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论