ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 请教:从选择的编号起显示的问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-5-25 18:24 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
从选择的编号起显示的问题:
想要从被选择的编号中有相同编号的第一个开始显示,试了好长时间,没做好,请大师帮忙,谢谢!

模拟件.rar (27.12 KB, 下载次数: 31)

TA的精华主题

TA的得分主题

发表于 2014-5-26 12:07 | 显示全部楼层
你就是要做一个类似高级筛选么  你这也太麻烦了 懒得看bug 用sql吧
给你写个简单的 用sql来做筛选
  1.     Dim sql, brr, i&, ITM
  2.     sql = "select 月,日, 项目,材料名称,单位,数量 from [Sheet1$A4:I] where 编号=" & ComboBox1.Value
  3.     brr = SqlToArr(sql)
  4.     UserForm1.ListView1.ListItems.Clear
  5.         For i = 1 To UBound(brr)
  6.             '添加记录
  7.             Set ITM = ListView1.ListItems.Add()
  8.             '添加内容
  9.             ITM.Text = brr(i, 1)
  10.             ITM.SubItems(1) = brr(i, 2)
  11.             ITM.SubItems(2) = brr(i, 3)
  12.             ITM.SubItems(3) = brr(i, 4)
  13.             ITM.SubItems(4) = brr(i, 5)
  14.             ITM.SubItems(5) = brr(i, 6)
  15.        Next i

  16. End Sub


  17. Private Sub UserForm_Initialize()
  18.     Dim ITM As ListItem, sql$
  19.     With ListView1
  20.         .ColumnHeaders.Add , , "月", .Width / 16, lvwColumnLeft   '居左--第一列只能居左
  21.         .ColumnHeaders.Add , , "日", .Width / 16, lvwColumnCenter
  22.         .ColumnHeaders.Add , , "项目名称", .Width / 4, lvwColumnCenter
  23.         .ColumnHeaders.Add , , "材料名称", .Width / 4, lvwColumnCenter
  24.         .ColumnHeaders.Add , , "单位", .Width / 9, lvwColumnRight  '居右
  25.         .ColumnHeaders.Add , , "数量", .Width / 5, lvwColumnRight  '居右
  26.         .View = lvwReport         '设置显示格式为报表格式
  27.         .Gridlines = True           '显示网格线
  28.         .FullRowSelect = True
  29.      End With
  30.     sql = "select distinct 编号 from [Sheet1$A4:I] where not 编号 is null "
  31.     ComboBox1.List = SqlToArr(sql)
  32. End Sub

  33. Function SqlToArr(ByVal sql$)    '查询结果到数组
  34.     Dim cnn As Object    'New ADODB.Connection
  35.     Dim rs As Object, arr   'New ADODB.Recordset
  36.     Set cnn = CreateObject("adodb.connection")
  37.     cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties =Excel 12.0;Data Source =" & ThisWorkbook.FullName
  38.     'On Error Resume Next
  39.     Set rs = cnn.Execute(sql)
  40.     SqlToArr = Application.Transpose(rs.GetRows) '转置为excle格式的行列
  41.     'Set cnn = Nothing: Set rs = Nothing
  42. End Function
复制代码

11模拟件.rar (26.92 KB, 下载次数: 56)

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-5-26 13:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
百度不到去谷歌 发表于 2014-5-26 12:07
你就是要做一个类似高级筛选么  你这也太麻烦了 懒得看bug 用sql吧
给你写个简单的 用sql来做筛选

谢谢您大师帮助!

我想从选择的那个号(包括选取的号)开始,向下全部显示。怎么处理?谢谢!

TA的精华主题

TA的得分主题

发表于 2014-5-26 13:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
鄂龙蒙 发表于 2014-5-26 13:02
谢谢您大师帮助!

我想从选择的那个号(包括选取的号)开始,向下全部显示。怎么处理?谢谢!

sql里=改成>=  sql = "select 月,日, 项目,材料名称,单位,数量 from [Sheet1$A4:I] where 编号>=" & ComboBox1.Value

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-5-26 15:03 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-5-26 15:05 | 显示全部楼层
在下面加一行合计怎么加?谢谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-5-26 15:07 | 显示全部楼层
百度不到去谷歌 发表于 2014-5-26 12:07
你就是要做一个类似高级筛选么  你这也太麻烦了 懒得看bug 用sql吧
给你写个简单的 用sql来做筛选

在下面加一行合计怎么加?谢谢!

TA的精华主题

TA的得分主题

发表于 2014-5-26 15:37 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
鄂龙蒙 发表于 2014-5-26 15:05
在下面加一行合计怎么加?谢谢!

加上如下代码即可:
    c = c + Val(brr(i, 6))
    Next i
    Set ITM = ListView1.ListItems.Add()
    ITM.Text = "汇总"
    ITM.SubItems(5) = c

TA的精华主题

TA的得分主题

发表于 2014-5-26 15:38 | 显示全部楼层
VBA万岁 发表于 2014-5-26 15:37
加上如下代码即可:
    c = c + Val(brr(i, 6))
    Next i

即:
Option Explicit

Private Sub ComboBox1_Change()
    Dim sql, brr, i&, c As Long, ITM
    sql = "select 月,日, 项目,材料名称,单位,数量 from [Sheet1$A4:I] where 编号=" & ComboBox1.Value
    brr = SqlToArr(sql)
    UserForm1.ListView1.ListItems.Clear
    For i = 1 To UBound(brr)
        '添加记录
        Set ITM = ListView1.ListItems.Add()
        '添加内容
        ITM.Text = brr(i, 1)
        ITM.SubItems(1) = brr(i, 2)
        ITM.SubItems(2) = brr(i, 3)
        ITM.SubItems(3) = brr(i, 4)
        ITM.SubItems(4) = brr(i, 5)
        ITM.SubItems(5) = brr(i, 6)
        c = c + Val(brr(i, 6))    Next i
    Set ITM = ListView1.ListItems.Add()
    ITM.Text = "汇总"
    ITM.SubItems(5) = c
End Sub

Private Sub UserForm_Initialize()
    Dim ITM As ListItem, sql$
    With ListView1
        .ColumnHeaders.Add , , "月", .Width / 16, lvwColumnLeft   '居左--第一列只能居左
        .ColumnHeaders.Add , , "日", .Width / 16, lvwColumnCenter
        .ColumnHeaders.Add , , "项目名称", .Width / 4, lvwColumnCenter
        .ColumnHeaders.Add , , "材料名称", .Width / 4, lvwColumnCenter
        .ColumnHeaders.Add , , "单位", .Width / 9, lvwColumnRight  '居右
        .ColumnHeaders.Add , , "数量", .Width / 5, lvwColumnRight  '居右
        .View = lvwReport         '设置显示格式为报表格式
        .Gridlines = True           '显示网格线
        .FullRowSelect = True
    End With
    sql = "select distinct 编号 from [Sheet1$A4:I] where not 编号 is null "
    ComboBox1.List = SqlToArr(sql)
End Sub

Function SqlToArr(ByVal sql$)    '查询结果到数组
    Dim cnn As Object    'New ADODB.Connection
    Dim rs As Object, arr   'New ADODB.Recordset
    Set cnn = CreateObject("adodb.connection")
    cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties =Excel 12.0;Data Source =" & ThisWorkbook.FullName
    'On Error Resume Next
    Set rs = cnn.Execute(sql)
    SqlToArr = Application.Transpose(rs.GetRows) '转置为excle格式的行列
    'Set cnn = Nothing: Set rs = Nothing
End Function

TA的精华主题

TA的得分主题

发表于 2014-5-26 15:39 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
VBA万岁 发表于 2014-5-26 15:38
即:
Option Explicit

附件:
1模拟件.rar (25.7 KB, 下载次数: 46)

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-15 10:21 , Processed in 0.044567 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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