ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] zhaogang1960 老师解决ListView1和ComboBox1建立链接并可以模糊查询和导出相应工作表

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-9-7 11:21 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖已被收录到知识树中,索引项:控件
本帖最后由 feiaoli 于 2013-9-7 19:37 编辑

ListView1和ComboBox1建立连接模糊查询和导出

1、借用老师的ListView1已经建立了和单独工作表模糊查询导出的链接
2、ComboBox1(本例为"选择"名字)建立了和工作标签的链接

问题是:怎么样通过ComboBox(本例为"选择"名字)自由选择工作表,同时在ListView1中显示相应工作表的数据可以模糊查询导出

请老师看看怎么做代码???

选择工作表查询导出.rar (23.62 KB, 下载次数: 250)


问题解决喽!!再次谢谢zhaogang1960 老师、太牛了、我的附件也是在zhaogang1960 老师代码的基础上做的、嘿嘿还是zhaogang1960 解决的!!

点评

知识树索引内容:14楼  发表于 2013-9-25 21:19

TA的精华主题

TA的得分主题

发表于 2013-9-7 11:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
需要修改的地方挺多:
  1. Private Sub UserForm_Initialize()
  2.      
  3. With 选择       '内页数量 复合框赋值
  4.       .AddItem "打印记录"
  5.       .AddItem "操作记录"
  6.       .AddItem "备用表"
  7.       .ListIndex = -1
  8.     End With

  9. End Sub

  10. Sub 设置初值()
  11.    Dim i&, j&, arr, a(), k, m%, n%
  12.     With 打印记录
  13.         arr = .Range("A2").CurrentRegion
  14.         ReDim a(UBound(arr, 2) - 1)
  15.         For i = 0 To UBound(a)
  16.             a(i) = .Columns(i + 1).ColumnWidth * 7.5    'ListView1各列列宽
  17.         Next
  18.     End With
  19.     Set cnn = New ADODB.Connection
  20.     cnn.Open "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" & ThisWorkbook.FullName
  21.     SQL = "select * from [" & ActiveSheet.Name & "$]"
  22.     Set rs = New ADODB.Recordset
  23.     rs.Open SQL, cnn, adOpenKeyset, adLockOptimistic
  24.     On Error Resume Next
  25.     With ListView1
  26.         '        设置ListView1的标题,显示类型,整行选择和网格线属性
  27.         .ColumnHeaders.Clear
  28.         .View = lvwReport        '   listivew的显示格式为报表格式
  29.         .FullRowSelect = True    '   允许整行选中
  30.         .Gridlines = True        '   显示网格线
  31.         '        为ListView1设置标题
  32.         For i = 0 To rs.Fields.Count - 1
  33.             Set k = Controls.Add("Forms.TextBox.1", "TextBox" & i + 1, False) '模糊查询定义False为不显示TexBox ,True为显示
  34.             If i > 0 Then
  35.                 .ColumnHeaders.Add , , rs.Fields(i).Name, a(i), lvwColumnCenter    '从第2列起居中
  36.             Else
  37.                 .ColumnHeaders.Add , , rs.Fields(i).Name, a(i)
  38.             End If
  39.         Next i
  40.     End With
  41.     Call 显示数据(SQL)    '为ListView1设置各行数据
  42.     模糊查询.SetFocus

  43. End Sub

  44. Private Sub 选择_Change()           '选择窗口选择数据录入的工作表  2
  45. Select Case 选择.Value
  46.        Case "打印记录"
  47.              打印记录.Activate
  48.        Case "操作记录"
  49.              Sheet2.Activate
  50.        Case "备用表"
  51.             Sheet3.Activate
  52. End Select
  53. 模糊查询.Text = ""
  54. Call 设置初值
  55. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-9-7 11:48 | 显示全部楼层
请看附件
选择工作表查询导出.rar (22.35 KB, 下载次数: 450)

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-9-7 12:06 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
zhaogang1960 发表于 2013-9-7 11:48
请看附件

谢谢赵老师,刚才还没看您在线呢!O(∩_∩)O~
这个表的基础都是您的O(∩_∩)O~,盗用来不会链接了嘿嘿,还得请老师帮忙!!

问题解决、、、、、、、

1、有一点就是在查找操作记录工作表的时候 窗体中的标题多了 而备用报表正好。不知道我应该修改哪里??
2、另外、有没有在ComboBox中自动提取工作标签的VBA(也就是工作表增减ComboBox也随之增减)????

TA的精华主题

TA的得分主题

发表于 2013-9-7 12:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
第一句不理解
第二句:
  1. Dim sh As Worksheet
  2. With ComboBox1
  3.     For Each sh In Worksheets
  4.         .AddItem sh.Name
  5.     Next
  6. End With
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-9-7 12:29 | 显示全部楼层
zhaogang1960 发表于 2013-9-7 12:17
第一句不理解
第二句:

QQ截图20130907122658.png

如图片,应该是6个标题列,他创建了9个 其中3个没数据,其他两个表格没有这种现象,是按照表格创建的标题
不知道是什么原因?????

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-9-7 12:35 | 显示全部楼层
zhaogang1960 发表于 2013-9-7 12:17
第一句不理解
第二句:

赵老师,第一句的问题解决啦!!

我是复制的数据,lstview默认有数据,我把那几列删除就没有多余的列标题了、、

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-9-7 14:18 | 显示全部楼层
zhaogang1960 发表于 2013-9-7 11:48
请看附件

赵老师、应用中发现一个问题

下列代码出现 If rs.RecordCount = 0 Then 对象变量或with块未设置、怎么改代码???
  1. Private Sub 数据导出_Click()
  2.       If rs.RecordCount = 0 Then Exit Sub    '没有查询记录则退出
  3.     Dim arr(), i&, j&
  4.     ReDim arr(rs.Fields.Count - 1)
  5.     On Error Resume Next
  6.     For i = 0 To rs.Fields.Count - 1    '逐个字段
  7.         arr(i) = rs.Fields(i).name    '取字段名
  8.     Next i
  9.     With Workbooks.Add(xlWBATWorksheet).ActiveSheet    '新建只有一个工作表的工作簿
  10.         .Range("A2").CopyFromRecordset rs    '复制全部数据
  11.         With .Cells(1, 1).Resize(, rs.Fields.Count)    '表头区域
  12.             .Value = arr    '写表头
  13.             .Font.Bold = True    '黑体
  14.             .EntireColumn.AutoFit
  15.             .HorizontalAlignment = xlCenter    '垂直居中
  16.         End With
  17.     End With
  18.    End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2013-9-7 15:15 | 显示全部楼层
feiaoli 发表于 2013-9-7 14:18
赵老师、应用中发现一个问题

下列代码出现 If rs.RecordCount = 0 Then 对象变量或with块未设置、怎么 ...

第一句已经考虑到这个问题:
If rs.RecordCount = 0 Then Exit Sub    '没有查询记录则退出

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-9-7 15:23 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
zhaogang1960 发表于 2013-9-7 15:15
第一句已经考虑到这个问题:
If rs.RecordCount = 0 Then Exit Sub    '没有查询记录则退出

谢谢赵老师

你的代码在我的附件中完美无缺、只是我在应用中总出毛病、我还找不到。
或许我的自动加载项太多了,以至于
1、打开查询也不显示默认的表格了,只有选择表格才显示
2、模糊查询输入数据显示的数据就没有了
3、有时还提示定义名称太多
郁闷死我了,等我找到了问题再向您请教!!谢谢!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-22 11:26 , Processed in 0.036407 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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