ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 深夜发个处女求助贴,窗体模糊找查录入,我相信这里会有高手出现的

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-4-23 09:11 | 显示全部楼层
第一眼 看成   处女深夜发帖。。。。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-4-23 11:28 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
爱吃蜂蜜的狼 发表于 2019-4-22 20:34
试下这个,只是个草稿。

在此谢谢你了,想不到你会做那么多功能,真的很意外,需然和我想的有些不同,不知道能不能修改下呢?录入只需要录到入库单就可以了,不用把数据写进出入库记录表里的,
快照2.jpg

TA的精华主题

TA的得分主题

发表于 2019-4-23 11:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. '窗体代码如下:
  2. Private arr   '窗体公共数组

  3. '==============初始化
  4. Private Sub UserForm_Initialize()
  5.     Dim Myr&, i&
  6.     With Sheets("物品库")
  7.         Myr = .Range("b65536").End(xlUp).Row
  8.         arr = .Range("b5:e" & Myr)   '把物品装入数组
  9.     End With
  10.     With ListView1
  11.         .ColumnHeaders.Clear     '清除原设置
  12.         .ListItems.Clear         '清除列表
  13.         .View = lvwReport        '   listivew的显示格式为报表格式
  14.         .FullRowSelect = True    '   允许整行选中
  15.         .Gridlines = True        '   显示网格线
  16.         .CheckBoxes = True       '   显示复选框
  17.     End With
  18.     For i = 2 To 5  '自动设置标题列(列宽按原始表大小)
  19.         ListView1.ColumnHeaders.Add , , Sheets("物品库").Cells(5, i), Width:=Sheets("物品库").Cells(5, i).Width 'ListView1标题=第5行,宽=工作表列宽
  20.     Next i
  21.     For i = 1 To UBound(arr)    '列表赋值          '
  22.         With ListView1.ListItems.Add(, , arr(i, 1)) '数据显示的开始位置
  23.             For y = 2 To UBound(arr, 2)
  24.                 .SubItems(y - 1) = arr(i, y)        '这个1不能变
  25.             Next y
  26.         End With
  27.     Next i
  28.     OptionButton1.Value = True
  29. End Sub


  30. '=============================模糊查找
  31. Private Sub TextBox1_Change()
  32.     Dim s$, i&, x&, j&
  33.     s = Me.TextBox1.Value
  34.     If Len(s) = 0 Then s = "*"
  35.     With Me.ListView1
  36.         .ListItems.Clear
  37.         For i = 1 To UBound(arr)
  38.             For j = 1 To UBound(arr, 2)
  39.                 If arr(i, j) Like s Or InStr(arr(i, j), s) > 0 Or InStr(arr(i, j), UCase(s)) > 0 Then  '数字表示第二列
  40.                     With .ListItems.Add(, , arr(i, 1)) '开始的位置
  41.                         For x = 2 To UBound(arr, 2) ''''2
  42.                             .SubItems(x - 1) = arr(i, x)
  43.                         Next x
  44.                     End With
  45.                     Exit For
  46.                 End If
  47.             Next
  48.         Next i
  49.     End With
  50. End Sub

  51. '==================================单选录入
  52. Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
  53.     Dim h&, y&, r&
  54.     On Error Resume Next
  55.     With ListView1
  56.         h = Range("B65536").End(3).Row + 1
  57.         y = ActiveCell.Row  '选中的活动单元格行号
  58.         r = .SelectedItem.Index
  59.         If OptionButton1.Value Then
  60.            ' r = .SelectedItem.Index
  61.             Cells(h, 2) = .ListItems.Item(r)
  62.             For i = 1 To 3
  63.                 Cells(h, i + 2) = .ListItems(r).SubItems(i)
  64.             Next
  65.             Unload Me
  66.         End If
  67.     End With
  68. End Sub



  69. '==============================多选录入
  70. Sub 多选录入()
  71.     With Me.ListView1
  72.         If .ListItems.Count = 0 Then Exit Sub
  73.         .ListItems(1).Ghosted = False
  74.         r = Range("b65536").End(3).Row     '最大行数
  75.         For i = 1 To .ListItems.Count
  76.            If .ListItems(i).Checked Then
  77.                r = r + 1
  78.                .ListItems(i).Checked = False
  79.                 With ActiveSheet
  80.                    .Cells(r, 2).Offset(0, 0) = ListView1.ListItems(i).Text
  81.                    For j = 1 To 3
  82.                    .Cells(r, 2).Offset(0, j) = ListView1.ListItems(i).SubItems(j)
  83.                    Next
  84.                 End With
  85.            End If
  86.     Next i
  87.     End With
  88. Unload Me
  89. End Sub

  90. '===================双击启用多选录入
  91. Private Sub ListView1_DblClick()
  92.     多选录入
  93.     Unload Me
  94. End Sub
  95. '==================按扭多选录
  96. Private Sub CommandButton1_Click()
  97.     多选录入
  98.     Unload Me
  99. End Sub
  100. '==================退出
  101. Private Sub CommandButton2_Click()
  102.     Unload Me
  103. End Sub

复制代码

TA的精华主题

TA的得分主题

发表于 2019-4-23 11:35 | 显示全部楼层
vspon 发表于 2019-4-23 11:28
在此谢谢你了,想不到你会做那么多功能,真的很意外,需然和我想的有些不同,不知道能不能修改下呢?录入 ...

进销存.rar (75.71 KB, 下载次数: 15)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-4-23 12:06 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

我打开怎么用不了呢???帮忙看看那里有问题
QQ图片20190423120417.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-4-23 12:17 | 显示全部楼层
vspon 发表于 2019-4-23 12:06
我打开怎么用不了呢???帮忙看看那里有问题

要什么控件支持呢,,我的电脑提示无法安装对象,

TA的精华主题

TA的得分主题

发表于 2019-4-23 13:20 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
vspon 发表于 2019-4-23 12:17
要什么控件支持呢,,我的电脑提示无法安装对象,

你的系统可能没有 ListView 这个控件,需要激活或安装

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-4-23 16:39 | 显示全部楼层
本帖最后由 hzruziniu 于 2019-4-23 16:43 编辑

进销存.rar (78.78 KB, 下载次数: 25)
换一个ListBpx控件设置,这个控件肯定可以用了,窗体请点击出库表的B列
代码如下:
  1. Option Explicit
  2. Private Arr   '公有数组
  3. Dim Sht1 As Worksheet, Myr&

  4. '==============初始化
  5. Private Sub UserForm_Initialize()
  6.     Dim k, d
  7.     Set Sht1 = Worksheets("物品库")
  8.     Myr = Sht1.[B65536].End(xlUp).Row
  9.     Arr = Sht1.Range("b5:e" & Myr)
  10.     With Me.ListBox1
  11.         .ColumnCount = 4
  12.         .ColumnWidths = "80,150,150,70"
  13.         .ListStyle = fmListStyleOption '显示选项图标
  14.         .MultiSelect = 0    '显示单选项
  15.        ' .MultiSelect = 1    '显示复选项
  16.         .List = Arr
  17.     End With
  18.     OptionButton1.Value = True
  19. End Sub

  20. '==============单行录入
  21. Private Sub ListBox1_Click()
  22.     Dim n&, j&, y&
  23.     With ListBox1
  24.         If OptionButton1.Value Then
  25.             n = Range("B65536").End(3).Row + 1
  26.         Else
  27.             n = ActiveCell.Row  '选中的活动单元格行号
  28.         End If
  29.         For j = 0 To 3
  30.             Cells(n, j + 2) = ListBox1.List(ListBox1.ListIndex, j)
  31.         Next
  32. '        Unload Me
  33.     End With
  34. End Sub

  35. '===================勾选复选框多行录入
  36. Sub 多选录入()
  37.     Dim brr, i&, j&, k&, r&
  38.     ReDim brr(1 To ListBox1.ListCount, 1 To 4)
  39.     With ListBox1
  40.         If .ListCount < 1 Then Exit Sub
  41.         For i = 0 To .ListCount - 1
  42.             If .Selected(i) = True Then
  43.                 k = k + 1
  44.                 For j = 1 To 4
  45.                     brr(k, j) = .List(i, j - 1)
  46.                 Next
  47.             End If
  48.         Next
  49.     End With
  50.     Sheet4.Activate
  51.     r = Range("b65536").End(3).Row + 1
  52.     'Cells.ClearContents
  53.     Cells(r, 2).Resize(UBound(brr, 1), UBound(brr, 2)) = brr
  54. End Sub

  55. Private Sub CommandButton1_Click()
  56.     多选录入
  57.     Unload Me
  58. End Sub

  59. '==================勾选单选控件
  60. Private Sub OptionButton1_Click()
  61.     With ListBox1
  62.         If OptionButton1.Value = True Then
  63.             .MultiSelect = 0    '显示单选项
  64.         Else
  65.            .MultiSelect = 1      'Click() 触发事件
  66.         End If
  67.     End With
  68. End Sub


  69. '==================勾选复选(多选)控件
  70. Private Sub OptionButton2_Click()
  71.     With ListBox1
  72.         If OptionButton2.Value = True Then
  73.             .MultiSelect = 1    '显示复选项
  74.         Else
  75.            .MultiSelect = 2      'Click() 不触发事件
  76.         End If
  77.     End With
  78. End Sub

  79. '=================模糊查找生成列表
  80. Private Sub TextBox1_Change()
  81.     Dim s As String, j&, n&, x&, i&
  82.     Dim brr()
  83. '   Call zb
  84.     s = TextBox1.Text
  85.     With ListBox1
  86.         If TextBox1.Value <> "" Then
  87.             ReDim brr(1 To UBound(Arr), 1 To 4)
  88.             For i = 1 To UBound(Arr)
  89.                 If Arr(i, 1) Like "*" & s & "*" Or Arr(i, 2) Like "*" & s & "*" Or Arr(i, 3) Like "*" & s & "*" Or Arr(i, 4) Like "*" & s & "*" Then
  90.                     n = n + 1
  91.                     For j = 1 To 4
  92.                         brr(n, j) = Arr(i, j)
  93.                     Next
  94.                 End If
  95.             Next i
  96.             .List = brr
  97.         Else
  98.             .List = Arr
  99.         End If
  100.     End With
  101.   '  Label1.Caption = "共找到 " & n & " 条记录"
  102. End Sub

  103. '==================退出
  104. Private Sub CommandButton2_Click()
  105.     Unload Me
  106. End Sub
复制代码


评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-4-23 17:05 | 显示全部楼层
hzruziniu 发表于 2019-4-23 16:39
换一个ListBpx控件设置,这个控件肯定可以用了,窗体请点击出库表的B列
代码如下:

这个我电脑能用,你太让我惊讶了,绝对的精品,我都不敢想象你还会再次去再做,因为很多人都是怕麻烦的,真的想不到,你会那么用心去做,,谢谢!谢谢!谢谢!谢谢!谢谢!谢谢!谢谢!谢谢!谢谢!谢谢!谢谢!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-1 17:00 , Processed in 0.045304 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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