ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 望江婷

[求助] ado筛选怎么写ComboBox有请zhaogang1960老师

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-3-21 21:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 chengang1982 于 2011-3-21 21:39 发表
第一次见这种写法arr = [a2:h2&""]太高了请问侠圣gang1960  
如果写成Range或Cells----应该怎么写呢,怎么表示呢

没有对应的写法,可以用Transpose函数转换两次
    arr = Range("A2:H2")
    arr = WorksheetFunction.Transpose(WorksheetFunction.Transpose(arr))

TA的精华主题

TA的得分主题

发表于 2011-3-21 22:04 | 显示全部楼层
谢谢侠圣解答学习,这样arr = [a2:h2&""],好像不能指定工作表

TA的精华主题

TA的得分主题

发表于 2011-3-21 22:32 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-3-21 22:35 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-6-28 10:53 | 显示全部楼层
请看附件
求助.rar (17.23 KB, 下载次数: 15)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2012-6-24 11:35 | 显示全部楼层
myyj821001 发表于 2012-6-24 11:10
赵老师,把你做好符件传个上来学习学习

1楼附件,8楼代码:
新建文件夹 (2).rar (19.17 KB, 下载次数: 14)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2012-6-24 11:10 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
赵老师,把你做好符件传个上来学习学习

TA的精华主题

TA的得分主题

发表于 2012-6-28 10:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
myyj821001 发表于 2012-6-28 09:26
太感谢你了赵老师,强大,我就是想要这个功能,这一课对我受益非浅,我一定好好学习,总结总结再总结,真诚的向 ...
  1. Private Sub CommandButton1_Click()
  2.     Dim cnn As Object, rs As Object, SQL$, s$, lr&
  3.     Set cnn = CreateObject("ADODB.Connection")
  4.     Set rs = CreateObject("ADODB.Recordset")
  5.     If ComboBox3 <> "" Then s = " and [" & ComboBox1 & "] like '" & ComboBox3 & "'"
  6.     If ComboBox4 <> "" Then s = s & " and [" & ComboBox2 & "] like '" & ComboBox4 & "'"
  7.     Application.ScreenUpdating = False
  8.     lr = Range("A4").CurrentRegion.Row + Range("A4").CurrentRegion.Rows.Count
  9.     Cells(lr, 1).Resize(lr, 21).ClearContents
  10.     Cells.EntireRow.Hidden = False
  11.     If s = "" Then Exit Sub
  12.     cnn.Open "Provider = Microsoft.Jet.Oledb.4.0;Extended Properties =Excel 8.0;Data Source =" & ThisWorkbook.FullName
  13.     SQL = "Select * from [Sheet1$" & Range("A4").CurrentRegion.Address(0, 0) & "] where " & Mid(s, 5)
  14.     rs.Open SQL, cnn, 1, 3
  15.     If rs.RecordCount Then
  16.         Cells(5, 1).Resize(lr - 4).EntireRow.Hidden = True
  17.         Cells(lr + 1, 1).CopyFromRecordset rs
  18.     End If
  19.     cnn.Close
  20.     Set cnn = Nothing
  21.     Application.ScreenUpdating = True
  22. End Sub
  23. Private Sub CommandButton2_Click()
  24.     Dim lr&
  25.     lr = Range("A4").CurrentRegion.Row + Range("A4").CurrentRegion.Rows.Count
  26.     Cells(lr, 1).Resize(lr, 21).ClearContents
  27.     Cells.EntireRow.Hidden = False
  28.     Unload Me
  29. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2012-6-27 16:35 | 显示全部楼层
zhaogang1960 发表于 2012-6-24 11:35
1楼附件,8楼代码:

太强了,我的是在数据表里,也就想用这么个窗体筛选数据,初学,对数据库还不懂
我想使用VBA窗体来实现数据的筛选,(窗体和按我已经做好了,在附件中)

1.使combobox1和combobox2引用字段名(即:编号,姓名性别~~~~~~~在职状态这一行的数据) 最好是Combobox1选择的,在combobox2中不在出现

2.使combobox3根据combobox1输选择的字段名引用其字段下的内容,combobox4根据combobox2选择的字段名引用其字段下的数据,其引用的数据在列表中没有空白和重复内容

3.根据combobox1~4选择的内容对数据表"sheet1"的内容进行筛选,(可以只输入combobox1和3,也可以4个一起选择进行多条件筛选)

4.点击窗体上的"取消退出"按钮后,实现"全部显示",将筛选后的隐藏数据全部显示出来
求助.rar (10.46 KB, 下载次数: 4)
老师请你帮帮我,我已经在贴子里多方求助,可能是因为问题太多,还是因为太简单,一直没得到解决.拜托你了

TA的精华主题

TA的得分主题

发表于 2012-6-27 17:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
myyj821001 发表于 2012-6-27 16:35
太强了,我的是在数据表里,也就想用这么个窗体筛选数据,初学,对数据库还不懂
我想使用VBA窗体来实现数据的 ...

有点复杂,请测试
  1. Dim arr

  2. Private Sub ComboBox1_Change()
  3.     If ComboBox1.ListIndex = -1 Then Exit Sub
  4.     Dim i&, m&, brr(), d As Object
  5.     Set d = CreateObject("scripting.dictionary")
  6.     ReDim brr(1 To UBound(arr, 2))
  7.     For i = 1 To UBound(arr, 2)
  8.         If arr(1, i) <> ComboBox1.Value Then
  9.             m = m + 1
  10.             brr(m) = arr(1, i)
  11.         End If
  12.     Next
  13.     ComboBox2.List = brr
  14.     m = ComboBox1.ListIndex + 1
  15.     For i = 2 To UBound(arr)
  16.         d(arr(i, m)) = ""
  17.     Next
  18.     ComboBox3.Clear
  19.     ComboBox3.List = WorksheetFunction.Transpose(d.keys)
  20. End Sub


  21. Private Sub ComboBox2_Change()
  22.     If ComboBox2.ListIndex = -1 Then Exit Sub
  23.     Dim i&, m&, d As Object
  24.     Set d = CreateObject("scripting.dictionary")
  25.     m = Sheets("Sheet1").Rows(4).Find(ComboBox2.Value, , , 1).Column
  26.     For i = 2 To UBound(arr)
  27.         d(arr(i, m)) = ""
  28.     Next
  29.     ComboBox4.Clear
  30.     ComboBox4.List = WorksheetFunction.Transpose(d.keys)
  31. End Sub


  32. Private Sub CommandButton1_Click()
  33.     Dim cnn As Object, SQL$, s$
  34.     Set cnn = CreateObject("ADODB.Connection")
  35.     If ComboBox3 <> "" Then s = " and [" & ComboBox1 & "] like '" & ComboBox3 & "'"
  36.     If ComboBox4 <> "" Then s = s & " and [" & ComboBox2 & "] like '" & ComboBox4 & "'"
  37.     If s = "" Then Exit Sub
  38.     cnn.Open "Provider = Microsoft.Jet.Oledb.4.0;Extended Properties =Excel 8.0;Data Source =" & ThisWorkbook.FullName
  39.     SQL = "Select * from [Sheet1$A4:U] where " & Mid(s, 5)
  40.     With Sheets("Sheet2")
  41.         .UsedRange.Offset(1).ClearContents
  42.         .[a2].CopyFromRecordset cnn.Execute(SQL)
  43.         .Activate
  44.     End With
  45.     cnn.Close
  46.     Set cnn = Nothing
  47. End Sub

  48. Private Sub CommandButton2_Click()
  49.     Unload Me
  50. End Sub

  51. Private Sub UserForm_Initialize()
  52.     ComboBox1.List = WorksheetFunction.Transpose(WorksheetFunction.Transpose(Sheets("Sheet1").Range("A4:U4").Value))
  53.     arr = Sheets("Sheet1").Range("A4:U" & Sheets("Sheet1").Range("A65536").End(xlUp).Row)
  54. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-23 04:29 , Processed in 0.040091 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表