ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求助各位老师,VBA查询窗口查询+引用功能

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-12-27 08:28 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
求助各位老师帮帮忙,我想做一个查询窗口,主要功能就是通过查询窗口可以在原材料耗用表中模糊查询产品明细表里面,产品所对应的“物料代码”,然后再将查询到的物料代码通过点击填入到“物料代码”单元格中。这个功能要怎么实现呀,求助各位大佬了。

成本报表模板.rar

427.37 KB, 下载次数: 42

TA的精华主题

TA的得分主题

发表于 2018-12-27 08:46 | 显示全部楼层
窗体也不画一个,别人哪知道你要做成啥样

TA的精华主题

TA的得分主题

发表于 2018-12-27 13:08 | 显示全部楼层
成本报表模板.rar (454.18 KB, 下载次数: 123)

用ListView1控件给你设置一个
单击B列弹出窗体
在弹出的窗体中单击ListView1列表录入到工作表三列
在TextBox1中输入任何关健词进行模糊筛选查找

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-12-27 13:11 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
fyure 发表于 2018-12-27 08:46
窗体也不画一个,别人哪知道你要做成啥样

老师,就是想要做成这样的,麻烦您了。
格式模板.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-12-27 13:15 | 显示全部楼层
hzruziniu 发表于 2018-12-27 13:08
用ListView1控件给你设置一个
单击B列弹出窗体
在弹出的窗体中单击ListView1列表录入到工作表三列

谢谢老师了,嗯,就是我可以不可以做成这样的一个点选按钮,然后我想要选择的时候就选择,您的这个就是我只要一点单元格他就会出来,有时候可能不会需要,麻烦您了老师。非常感谢。
格式模板.png

TA的精华主题

TA的得分主题

发表于 2018-12-28 14:06 | 显示全部楼层
  1. Option Explicit
  2. Dim Sht1 As Worksheet, Myr&, arr, i&
  3. Dim Itm As Object 'Dim ITM As ListItem

  4. '==============退出
  5. Private Sub Label27_Click()
  6.     Unload Me
  7. End Sub

  8. '==============删除
  9. Private Sub Label11_Click()
  10.     Dim i As Long
  11.     i = [b10000].End(xlUp).Row
  12.     Range("b" & i & ":e" & i).ClearContents
  13.     MsgBox "删除成功!"
  14. End Sub

  15. '==============录入
  16. Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
  17.     Dim h&, y&, r&
  18.     On Error Resume Next
  19.     With ListView1
  20.         h = Range("B65536").End(3).Row + 1
  21.         y = ActiveCell.Row  '选中的活动单元格行号
  22.         r = .SelectedItem.Index
  23.         If OptionButton1.Value Then
  24.            ' r = .SelectedItem.Index
  25.             [B65536].End(3).Offset(1, 0) = 1 * .ListItems.Item(r)
  26.             For i = 1 To 3
  27.                 [B65536].End(3).Offset(0, i) = .ListItems(r).SubItems(i)
  28.             Next
  29.         Else
  30.             Cells(y, 2).Offset(0, 0) = 1 * .ListItems.Item(r)
  31.             For i = 1 To 3
  32.                 Cells(y, 2).Offset(0, i) = .ListItems(r).SubItems(i)
  33.             Next
  34.         End If
  35.         Unload Me
  36.     End With
  37. End Sub

  38. '=================模糊查找生成列表
  39. Private Sub TextBox1_Change()
  40.     Dim s As String, j&
  41.     Call zb
  42.     If TextBox1.Value <> "" Then
  43.         s = TextBox1.Text
  44.         For i = 1 To UBound(arr)
  45.             For j = 1 To 4
  46.                 If arr(i, j) Like "*" & s & "*" Then
  47.                     Set Itm = ListView1.ListItems.Add()
  48.                     Itm.Text = arr(i, 1)
  49.                     Itm.SubItems(1) = arr(i, 2)
  50.                     Itm.SubItems(2) = arr(i, 3)
  51.                     Itm.SubItems(3) = arr(i, 4)
  52.                 End If
  53.             Next
  54.         Next
  55.     Else
  56.         For i = 1 To UBound(arr)
  57.             Set Itm = ListView1.ListItems.Add
  58.             Itm.Text = arr(i, 1)
  59.             Itm.SubItems(1) = arr(i, 2)
  60.             Itm.SubItems(2) = arr(i, 3)
  61.             Itm.SubItems(3) = arr(i, 4)
  62.         Next
  63.     End If
  64.     Label1.Caption = "共找到 " & ListView1.ListItems.Count & " 条记录"
  65. End Sub

  66. '==============初始化
  67. Private Sub UserForm_Initialize()
  68.     Dim k, d
  69.     Set d = CreateObject("Scripting.Dictionary")
  70.     Set Sht1 = Worksheets("产品明细表")
  71.     Myr = Sht1.[B65536].End(xlUp).Row
  72.     arr = Sht1.Range("b3:e" & Myr)
  73.     Call zb
  74.     Call tgse 'zb
  75.     For i = 1 To UBound(arr)
  76.         d(arr(i, 2)) = ""
  77.     Next
  78.     k = d.keys
  79.     With Me.ListBox1
  80.         .ColumnCount = 1
  81.         .ColumnWidths = "50"
  82.       '  .ColumnHeads = True
  83.         .BoundColumn = 1
  84.         .List = k
  85.     End With
  86.     OptionButton1.Value = True
  87.     Set d = Nothing
  88. End Sub

  89. '==============设置表格式填表头项目
  90. Sub zb()
  91. With ListView1
  92.     .ColumnHeaders.Clear
  93.     .ListItems.Clear
  94.     .ColumnHeaders.Add , , "产品代码", Width / 6
  95.     .ColumnHeaders.Add , , "产品类别", Width / 6
  96.     .ColumnHeaders.Add , , "产品名称", Width / 7
  97.     .ColumnHeaders.Add , , "产品型号", Width / 7
  98.     .View = lvwReport        '   listivew的显示格式为报表格式
  99.     .FullRowSelect = True    '   允许整行选中
  100.     .Gridlines = True        '   显示网格线
  101. End With
  102. End Sub

  103. '==============填表
  104. Sub tgse()
  105.     For i = 1 To UBound(arr)
  106.         If TextBox1.Text <> "" And TextBox1.Text = arr(i, 2) Then
  107.             Set Itm = ListView1.ListItems.Add
  108.             Itm.Text = arr(i, 1)
  109.             Itm.SubItems(1) = arr(i, 2)
  110.             Itm.SubItems(2) = arr(i, 3)
  111.             Itm.SubItems(3) = arr(i, 4)
  112.         Else
  113.             Set Itm = ListView1.ListItems.Add
  114.             Itm.Text = arr(i, 1)
  115.             Itm.SubItems(1) = arr(i, 2)
  116.             Itm.SubItems(2) = arr(i, 3)
  117.             Itm.SubItems(3) = arr(i, 4)
  118.         End If
  119.     Next i
  120. End Sub

  121. '===================分类查找生成列表
  122. Private Sub ListBox1_Click()
  123.      TextBox1.Text = ListBox1.List(ListBox1.ListIndex, 0)
  124.      Call zb
  125.      For i = 1 To UBound(arr)
  126.          If TextBox1.Text = arr(i, 2) Then
  127.             Set Itm = ListView1.ListItems.Add
  128.             Itm.Text = arr(i, 1)
  129.             Itm.SubItems(1) = arr(i, 2)
  130.             Itm.SubItems(2) = arr(i, 3)
  131.             Itm.SubItems(2) = arr(i, 4)
  132.         End If
  133.      Next i
  134. End Sub

复制代码


TA的精华主题

TA的得分主题

发表于 2018-12-28 14:17 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
成本报表模板 .rar (459.37 KB, 下载次数: 140) 按你的要求把文件发给你,你的文件中没有产品类别,按你的图示加了一列产品类别
1、打开窗体自动生成全部产品的列表,并在左侧生成产品不重复值列表
2、点击左侧的产品类别右侧窗口筛选所选该类型的产品
3、在右上方的文本内输入任何列中的字符模糊查找生成列表
4、录入分二种类型:点选录入,则按下方录入
    点选修改,则录入到所选中的行

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-12-28 14:22 | 显示全部楼层
hzruziniu 发表于 2018-12-28 14:17
按你的要求把文件发给你,你的文件中没有产品类别,按你的图示加了一列产品类别
1、打开窗体自动生成全部 ...

拜谢老师啦,非常感谢

TA的精华主题

TA的得分主题

发表于 2018-12-28 15:11 | 显示全部楼层
hzruziniu 发表于 2018-12-28 14:17
按你的要求把文件发给你,你的文件中没有产品类别,按你的图示加了一列产品类别
1、打开窗体自动生成全部 ...

真的,非常好,收藏了。

TA的精华主题

TA的得分主题

发表于 2018-12-29 15:18 | 显示全部楼层
zxh880703 发表于 2018-12-28 14:22
拜谢老师啦,非常感谢

成本报表模板 (version 1).rar (469.25 KB, 下载次数: 259)

增加了新的产品名称录入窗体
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-20 23:43 , Processed in 0.049289 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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