ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何运用单元格有效性和复选框实现单一条件或多条件查询

如何运用单元格有效性和复选框实现单一条件或多条件查询

作者:绿色风 分类: 时间:2022-08-17 浏览:66
楼主
xmyjk
Q:    1、在“查询表”的C1单元格输入单位名称,应能自动将该单位相关业务记录的“内容”“单价”“数量”“金额”“经办人”“备注”项依次提取出来,填入此表相应位置。
  例如:在C1录入“县职教中心”,应能自动将县职教中心相关业务记录的“内容”“单价”“数量”“金额”“经办人”“备注”项依次提取出来,填入此表相应位置。
   2、若需同时查看多个单位的记录,可将第一行中的复选按钮选中后依次添加多个单位的业务记录。
   3、单元格C1中应会出现下拉列表框,将“业务记录表”中各单位名称提取到列表中,以便选择(也可直接中C1中输入)需查询的单位。
    4、“业务记录表”中记录的数据量很大时也应能完成。
   注:“业务记录表”中记录了各单位在本部门所办业务的相关信息。


A:
  1. Dim vl As String

  2. Private Sub CheckBox1_Click()
  3.     [c1:g1].ClearContents
  4.     vl = ""
  5.     [a1].CurrentRegion.Offset(2).Clear
  6. End Sub

  7. Private Sub Worksheet_Activate()
  8.     Dim cnn As Object, sql As String, arr
  9.     Range("C1:G1").Validation.Delete
  10.     Set cnn = CreateObject("ADODB.Connection")
  11.     cnn.Open "Provider=Microsoft.Jet.Oledb.4.0;Extended Properties=Excel 8.0;Data Source=" & ThisWorkbook.FullName
  12.     sql = "Select distinct 单位 From[业务记录表$] where 单位 is not null"
  13.     arr = cnn.Execute(sql).getrows
  14.     cnn.Close: Set cnn = Nothing

  15.     With Range("C1:G1").Validation
  16.         .Delete
  17.         .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Join(Application.Transpose(Application.Transpose(arr)), ",")
  18.         .IgnoreBlank = True
  19.         .InCellDropdown = True
  20.         .IMEMode = xlIMEModeNoControl
  21.         .ShowInput = True
  22.         .ShowError = True
  23.     End With
  24. End Sub


  25. Private Sub Worksheet_Change(ByVal Target As Range)
  26.     Application.EnableEvents = False
  27.     If Target.Address(0, 0) = "C1" Or Target.Address(0, 0) = "C1:G1" Then
  28.         Dim cnn As Object, sql As String
  29.         [a1].CurrentRegion.Offset(2).Clear
  30.         If [c1] <> "" Then
  31.             Set cnn = CreateObject("ADODB.Connection")
  32.             cnn.Open "Provider=Microsoft.Jet.Oledb.4.0;Extended Properties=Excel 8.0;Data Source=" & ThisWorkbook.FullName
  33.             sql = "Select 序号,内容,单价,数量,金额,经办人,备注 From[业务记录表$] where 单位 = '" & Range("c1").Value & "'"
  34.             If Sheet1.CheckBox1.Value = True Then
  35.                 If vl <> [c1] Then
  36.                     If vl <> "" Then
  37.                         [c1] = vl & "," & "'" & [c1] & "'"
  38.                         sql = "Select 序号,内容,单价,数量,金额,经办人,备注 From[业务记录表$] where 单位 in ('" & Range("c1").Value & ")"
  39.                     Else
  40.                         [c1] = "'" & [c1] & "'"
  41.                     End If
  42.                     vl = [c1]
  43.                 Else
  44.                     Exit Sub
  45.                 End If
  46.             End If
  47.             [a65536].End(3).Offset(1).CopyFromRecordset cnn.Execute(sql)
  48.             cnn.Close: Set cnn = Nothing
  49.         Else
  50.             vl = ""
  51.         End If
  52.     End If
  53.     Application.EnableEvents = True
  54. End Sub

业务记录效果表.zip
2楼
eliane_lei
进来学习!
3楼
老糊涂
进来学习

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap