ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

跪求出入库VBA

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-11-2 23:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
看看这个版本

库存.rar

28.68 KB, 下载次数: 44

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-3 03:34 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
hehex 发表于 2012-11-2 23:58 看看这个版本

这么晚还加班帮我写,真的非常感谢你啊!现在这版本可以了。
我想问一下能不能批量的查找,现在只能一个一个批号来找,能不能实现多批号查找的功能呀?

TA的精华主题

TA的得分主题

发表于 2012-11-3 10:46 | 显示全部楼层
加入了多批号查询,批号之间用半角英文逗号分开。
如果有无效的批号,比如输错了,在前面和中间都无所谓,如果出现在最后会出现无效批号的提示。
不影响使用,就先发上来,前面正确的批号可以正常显示。
即 输入: a,b,c 3个批号
假设 a 是错的,b,c 都是正确的,程序可以显示b ,c 的所有记录信息(包括不同仓位)无其他提示
假设 c 是错的,a,b 都是正确的,程序可以显示a,b 所有记录信息,但是会显示错误批号提示窗口(这是个小逻辑bug)。
假设 都是错的,无显示,提示错误批号窗口。

库存.rar

30.37 KB, 下载次数: 31

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-3 19:38 | 显示全部楼层
非常感谢呀!!!!不知大哥还是姐姐,呵呵!!!
有了这个以后查询就方便了!!!!哈哈
你帮我看一下还有个什么可能改良的地方吗????{:soso_e100:}

TA的精华主题

TA的得分主题

发表于 2012-11-4 22:34 | 显示全部楼层
看来脑子乱的时候就是不能写代码,上周5 工作抽空写的代码有几处逻辑bug,特别是自查模块和入库模块。
今天回来修正了一下,彻底重写了自查模块。

库存.rar

31.92 KB, 下载次数: 57

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-5 02:12 来自手机 | 显示全部楼层
本帖最后由 WJD1163 于 2012-11-5 03:02 编辑

hehex 发表于 2012-11-4 22:34 看来脑子乱的时候就是不能写代码,上周5 工作抽空写的代码有几处逻辑bug,特别是自查模块和入库模块。 今天 ...
呵有劳兄弟了,真想自已学下VbA,可惜英语水平不好呀!
我看到你自查那代码里,有部份注释了,如果我只想只保留一个批号,是不是启用那代码啊?

TA的精华主题

TA的得分主题

发表于 2012-11-5 10:31 | 显示全部楼层
WJD1163 发表于 2012-11-5 02:12
呵有劳兄弟了,真想自已学下VbA,可惜英语水平不好呀!
我看到你自查那代码里,有部份注释了,如果我只想 ...

目前没有基于批号单条件的,以前的版本是。现在是只保留一个批号并且相同仓位的记录,同批号不同仓位的记录是分别保留的。
目前自查是在入库最后自动调用的,当然你可以修改代码实现手动自查。
就是在入库最后把call 自查这句话前面加上' 注释掉。这样你的入库单到数据库是不会合并保留原样的。然后可以在数据库sheet 上建立一个按钮,右键绑定宏,绑上自查宏即可。

TA的精华主题

TA的得分主题

发表于 2012-11-5 10:34 | 显示全部楼层
WJD1163 发表于 2012-11-5 02:12
呵有劳兄弟了,真想自已学下VbA,可惜英语水平不好呀!
我看到你自查那代码里,有部份注释了,如果我只想 ...

上面注释的代码是上周写的,思路没问题,但是代码实现上有问题,工余做的,一遍得应付工作,有逻辑bug。
用那代码的思路继续做也可以,重写决定用数组和字典对象来做,如果记录多的话执行速度要比单元格访问快很多。

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-11-5 11:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
如果只保存单条的话,要改那个代码呀?要怎样改呀??{:soso_e132:}

TA的精华主题

TA的得分主题

发表于 2012-11-5 13:07 | 显示全部楼层
本帖最后由 hehex 于 2012-11-5 13:08 编辑
WJD1163 发表于 2012-11-5 11:42
如果只保存单条的话,要改那个代码呀?要怎样改呀??


单条件批号自查模块可以参考本贴13楼那个无错的附件内相关代码,是用单元格区域对象写的。
下面这个是用数组和字典对象写的只保留单条件批号的代码。
  1. Sub 自查()
  2. '数据库表自查程序,如果有相同批号记录就合并数量,并删除重复批号行,
  3. '只保留第一行批号出现记录,仓位数据无实际意义了。
  4.     Dim ar() As Variant, br() As Variant, d As Object, i%, cr() As Variant, j%, m%
  5.     Sheet4.Activate
  6.     ar = Range("a1").CurrentRegion
  7.     Set d = CreateObject("scripting.dictionary") '定义字典对象
  8.     For i = 2 To UBound(ar)
  9.         If ar(i, 3) <> "" Then d(ar(i, 3)) = d(ar(i, 3)) + ar(i, 4)   '单条件批号读入字典,Key: 批号, Item: 该批号对应的所有记录数量和
  10.     Next
  11.     ReDim br(1 To d.Count, 1 To 8)
  12.     ReDim cr(1 To d.Count, 1 To 2)
  13.     cr = WorksheetFunction.Transpose(Array(d.keys, d.items))
  14.    
  15.     For i = 1 To UBound(br)
  16.          'j = InStr(cr(i, 1), ",")
  17.          br(i, 3) = cr(i, 1) '读入不重复的批号进数组br 第3列
  18.          'br(i, 5) = Mid(cr(i, 1), j + 1, Len(cr(i, 1)) - j)
  19.          br(i, 4) = cr(i, 2) '将合计数量读入br 第4列
  20.     Next


  21.    For j = 1 To UBound(br)
  22.        For i = 2 To UBound(ar)
  23.            If (br(j, 3) = ar(i, 3)) Then
  24.                  br(j, 1) = ar(i, 1)
  25.                  br(j, 2) = ar(i, 2)
  26.                  br(j, 3) = ar(i, 3)
  27.                  br(j, 5) = ar(j, 5)
  28.                  br(j, 6) = ar(i, 6)
  29.                  br(j, 7) = ar(i, 7)
  30.                  br(j, 8) = ar(i, 8)
  31.            End If
  32.        Next
  33.     Next
  34.    Range("a2:h8").ClearContents
  35.    Range("a2").Resize(UBound(br), 8) = br
  36.    Set d = Nothing
  37.    Erase ar: Erase br: Erase cr
  38. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 12:08 , Processed in 0.038053 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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