Excel精英培训网

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

[已解决]请问查询商品资料,如果有则显示名称,没有则新增

[复制链接]
发表于 2017-7-31 11:09 | 显示全部楼层 |阅读模式
       求各位大神指点,一个进销存的表,里面有商品资料,入库单,销售,调拨,库存,在入库单和销售,调拨里,输入条码,自动显示商品名称,这个已经实现了。现在想新增一个功能,如果商品资料里没有的产品,在入库单,销售,和调拨录入的时候自动新增到商品资料里。
最佳答案
2017-7-31 12:57
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
Dim rng As Range
If Target.Column = 2 Then
  If Target.Value = "" Then Target(1, 2) = "": Exit Sub
  Set rng = Sheet5.Columns(1).Find(Target)
  If Not rng Is Nothing Then Target(1, 2) = rng(1, 2)
ElseIf Target.Column = 3 Then
  If Target <> "" Then
    Sheet5.[a65536].End(3).Offset(1) = Target.Offset(, -1)
    Sheet5.[b65536].End(3).Offset(1) = Target
  End If
End If
Application.EnableEvents = True
End Sub

请指教.JPG

请指教.zip

132.32 KB, 下载次数: 4

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-7-31 12:57 | 显示全部楼层    本楼为最佳答案   
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Application.EnableEvents = False
Dim rng As Range
If Target.Column = 2 Then
  If Target.Value = "" Then Target(1, 2) = "": Exit Sub
  Set rng = Sheet5.Columns(1).Find(Target)
  If Not rng Is Nothing Then Target(1, 2) = rng(1, 2)
ElseIf Target.Column = 3 Then
  If Target <> "" Then
    Sheet5.[a65536].End(3).Offset(1) = Target.Offset(, -1)
    Sheet5.[b65536].End(3).Offset(1) = Target
  End If
End If
Application.EnableEvents = True
End Sub

回复

使用道具 举报

 楼主| 发表于 2017-7-31 14:36 | 显示全部楼层
大灰狼1976 发表于 2017-7-31 12:57
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Application. ...

感谢版主大大,Find用精确查找完美解决。
回复

使用道具 举报

 楼主| 发表于 2017-7-31 15:24 | 显示全部楼层
大灰狼1976 发表于 2017-7-31 12:57
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Application. ...

版主大大,出现一个问题,B列和C列不为空白的时候,比如双击B6,再双击C6,就向商品资料里添加一次商品信息,重复操作一次就添加一次,能不能加一个判断,如果商品资料里有此条码就不用增加了呀。另外版主大大能不能帮看下统计库存的代码呀,当销售为负数时,计数不正确。
重复.JPG
回复

使用道具 举报

发表于 2017-7-31 16:36 | 显示全部楼层
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Count > 1 Then Exit Sub
  3. Application.EnableEvents = False
  4. Dim rng As Range
  5. If Target.Column = 2 Then
  6.   If Target.Value = "" Then Target(1, 2) = "": Exit Sub
  7.   Set rng = Sheet5.Columns(1).Find(Target)
  8.   If Not rng Is Nothing Then Target(1, 2) = rng(1, 2)
  9. ElseIf Target.Column = 3 Then
  10.   If Target <> "" Then
  11.     With Sheet5
  12.       Set rng = .Columns(1).Find(Target.Offset(, -1))
  13.       If rng Is Nothing Then
  14.         .[a65536].End(3).Offset(1) = Target.Offset(, -1)
  15.         .[b65536].End(3).Offset(1) = Target
  16.       End If
  17.     End With
  18.   End If
  19. End If
  20. Application.EnableEvents = True
  21. End Sub
复制代码
回复

使用道具 举报

发表于 2017-7-31 16:37 | 显示全部楼层
统计错误我帮不了你,代码中有汉字,我这边都显示成乱码。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 10:51 , Processed in 0.364872 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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