Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2433|回复: 11

[已解决]窗体求改进!

[复制链接]
发表于 2013-1-16 10:12 | 显示全部楼层 |阅读模式
东西都在附件里,已有说明
最佳答案
2013-1-16 11:14
孤单无所谓 发表于 2013-1-16 11:05
没弄明白怎么回事 代码原封没懂嘛!!!

没认真看嘛。
进销存系统.rar (38.38 KB, 下载次数: 14)

进销存系统.rar

37.22 KB, 下载次数: 9

发表于 2013-1-16 10:38 | 显示全部楼层
你的现在可以直接双击进入表格中,不过不能多项同时进入。
另外关键字一栏,只能针对第一列。
回复

使用道具 举报

 楼主| 发表于 2013-1-16 10:50 | 显示全部楼层
hwc2ycy 发表于 2013-1-16 10:38
你的现在可以直接双击进入表格中,不过不能多项同时进入。
另外关键字一栏,只能针对第一列。

这个我知道。。。。能不能在双击第一列然后在弹出个窗体  输入箱数 最后在一起复制到 左表中啊??
回复

使用道具 举报

发表于 2013-1-16 10:53 | 显示全部楼层
本帖最后由 hwc2ycy 于 2013-1-16 11:01 编辑

针对输入的箱数进行筛选
  1. Private Sub TextBox1_Change()
  2.     Dim what As String: what = TextBox1.value
  3.     ListView1.ListItems.Clear
  4.     If what = "" Then
  5.         For i = 1 To UBound(arr)
  6.             Set itm = ListView1.ListItems.Add()
  7.             itm.Text = arr(i, 1)
  8.             itm.SubItems(1) = arr(i, 2)
  9.             itm.SubItems(2) = arr(i, 3)
  10.             itm.SubItems(3) = arr(i, 4)
  11.             itm.SubItems(4) = Format(arr(i, 5), "0.00")
  12.         Next i
  13.     Else
  14.         Dim dic As Object
  15.         Set dic = CreateObject("scripting.dictionary")
  16.         For i = 1 To UBound(arr)
  17.             If arr(i, 3) Like "*" & what & "*" Then
  18.                 If Not dic.exists(arr(i, 1)) Then
  19.                     dic.Add arr(i, 1), ""
  20.                     Set itm = ListView1.ListItems.Add()
  21.                     itm.Text = arr(i, 1)
  22.                     itm.SubItems(1) = arr(i, 2)
  23.                     itm.SubItems(2) = arr(i, 3)
  24.                     itm.SubItems(3) = arr(i, 4)
  25.                     itm.SubItems(4) = Format(arr(i, 5), "0.00")
  26.                 End If
  27.             End If
  28.         Next
  29.     End If
  30.     Label2.Caption = "共找到 " & ListView1.ListItems.Count & " 条记录"
  31.     Set dic = Nothing
  32. End Sub
复制代码

评分

参与人数 1 +6 收起 理由
孤单无所谓 + 6 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2013-1-16 11:00 | 显示全部楼层
本帖最后由 hwc2ycy 于 2013-1-16 11:02 编辑

回车后,筛选的数据写入表格
  1. Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  2.     If Len(TextBox1.Text) = 0 Then Exit Sub
  3.     Dim i&, arr1, j&

  4.     With Me.ListView1
  5.         ReDim arr1(1 To .ListItems.Count, 1 To 5)
  6.         For i = 1 To .ListItems.Count
  7.             arr1(i, 1) = .ListItems(i).Text
  8.             For j = 2 To UBound(arr, 2)
  9.                 arr1(i, j) = .ListItems(1).SubItems(j - 1)
  10.             Next
  11.             arr1(i, 3) = ""
  12.         Next
  13.     End With
  14.     Selection.Resize(UBound(arr1), UBound(arr1, 2)) = arr1
  15. End Sub
复制代码

评分

参与人数 1 +6 收起 理由
孤单无所谓 + 6

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2013-1-16 11:05 | 显示全部楼层
hwc2ycy 发表于 2013-1-16 10:53
针对输入的箱数进行筛选

没弄明白怎么回事 代码原封没懂嘛!!!
回复

使用道具 举报

发表于 2013-1-16 11:06 | 显示全部楼层
写入数据,我直接偷懒了,因为你在TEXTBOX回车后焦点就转移了,直接用的ONEXIT事件。
另外我觉得你写入数据的位置,其实直接用最后一行位置来比较好。

评分

参与人数 1 +6 收起 理由
孤单无所谓 + 6

查看全部评分

回复

使用道具 举报

发表于 2013-1-16 11:12 | 显示全部楼层
按A列空白位置依次写入表中。

  1. Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  2.     If Len(TextBox1.Text) = 0 Then Exit Sub
  3.     Dim i&, arr1, j&

  4.     With Me.ListView1
  5.         ReDim arr1(1 To .ListItems.Count, 1 To 5)
  6.         For i = 1 To .ListItems.Count
  7.             arr1(i, 1) = .ListItems(i).Text
  8.             For j = 2 To UBound(arr, 2)
  9.                 arr1(i, j) = .ListItems(1).SubItems(j - 1)
  10.             Next
  11.             arr1(i, 3) = ""
  12.         Next
  13.     End With
  14.     i = [a65536].End(xlUp).Row + 1
  15.     Cells(i, 1).Resize(UBound(arr1), UBound(arr1, 2)) = arr
  16.     'Selection.Resize(UBound(arr1), UBound(arr1, 2)) = arr1
  17. End Sub
复制代码

评分

参与人数 1 +6 收起 理由
孤单无所谓 + 6 很给力!

查看全部评分

回复

使用道具 举报

发表于 2013-1-16 11:14 | 显示全部楼层    本楼为最佳答案   
孤单无所谓 发表于 2013-1-16 11:05
没弄明白怎么回事 代码原封没懂嘛!!!

没认真看嘛。
进销存系统.rar (38.38 KB, 下载次数: 14)

评分

参与人数 1 +6 收起 理由
孤单无所谓 + 6 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2013-1-16 11:14 | 显示全部楼层
hwc2ycy 发表于 2013-1-16 11:06
写入数据,我直接偷懒了,因为你在TEXTBOX回车后焦点就转移了,直接用的ONEXIT事件。
另外我觉得你写入数据 ...

我已经晕了 能不能上个附件让我瞅瞅{:3912:}
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-26 18:40 , Processed in 0.353337 second(s), 18 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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