Excel精英培训网

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

[已解决]VB问题:提交后,清除空值行

[复制链接]
发表于 2013-3-31 19:21 | 显示全部楼层 |阅读模式
本帖最后由 hannanrenjie 于 2013-3-31 22:37 编辑

Sub 入库提交()
Dim a As Long
    a = Sheets("入库单").[a1].End(xlUp).Row
      Range("C5:S14").Select
      Selection.Copy
      Sheets("数据库").Visible = True '显示数据库表
Dim b As Long
    b = Sheets("数据库").[a65536].End(xlUp).Row + 1
    Sheets("数据库").Select
    Sheets("数据库").Cells(b, 1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

'ActiveWindow.SelectedSheets.Visible = False '隐藏数据库表
    Sheets("入库单").Select
      Range("F6:F14") = ""
    Range("M5:M14") = ""

End Sub

  求一段代码:在粘贴步骤之后,清除空值或0值的行(目的:下次粘贴时,在有数据行下一行粘贴)
大概意思:整张单据是C5:S14,如果只有3个项目,因为里面有公式,下面的C8到S14就会出现空值。
粘贴到“数据库”表的A列到N列中,就会出现空值。下次再运行时,这7个有空值的行也算作了有数据。
我希望用VB在“数据库”中删除这7行空值为0的行。或者说是清除它里面的内容(空值或0)
或者将”b“的赋值改为不等于空或不等于0,说不定可以解决问题!不知道怎样改才行。
  Range("C6:D14") = "" 这一句以后会去掉(就是说要保留C5:D14中的公式)




最佳答案
2013-3-31 21:24
  1. Sub 入库提交()
  2. Dim a As Long
  3.     a = IIf(Sheets("入库单").[G14] = "", Sheets("入库单").[G14].End(xlUp).Row, 14)
  4.       Range("C5:S" & a).Select
  5.       Selection.Copy
  6.       Sheets("数据库").Visible = True '显示数据库表
  7. Dim b As Long
  8.     b = Sheets("数据库").[a65536].End(xlUp).Row + 1
  9.     Sheets("数据库").Select
  10.     Sheets("数据库").Cells(b, 1).Select
  11.     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  12.         :=False, Transpose:=False
  13.     'ActiveWindow.SelectedSheets.Visible = False '隐藏数据库表
  14.     Sheets("入库单").Select
  15.     Range("C6:D14") = ""
  16.     Range("F6:F14") = ""
  17.     Range("M5:M14") = ""
  18.    
  19. End Sub
复制代码

五金求代码.rar

778.65 KB, 下载次数: 35

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-3-31 19:25 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2013-3-31 19:38 | 显示全部楼层
hhl1984 发表于 2013-3-31 19:25
没有附件啊^^^^^^^

附件较大。我删除一部分再上传。
大概意思:整张单据是C5:S14,如果只有3个项目,因为里面有公式,下面的C8到S14就会出现空值。
粘贴到“数据库”表的A列到N列中,就会出现空值。下次再运行时,这7个有空值的行也算作了有数据。
我希望删除“数据库”中这7行空值为0的行。或者说是清除它里面的内容(空值或0)
回复

使用道具 举报

发表于 2013-3-31 21:24 | 显示全部楼层    本楼为最佳答案   
  1. Sub 入库提交()
  2. Dim a As Long
  3.     a = IIf(Sheets("入库单").[G14] = "", Sheets("入库单").[G14].End(xlUp).Row, 14)
  4.       Range("C5:S" & a).Select
  5.       Selection.Copy
  6.       Sheets("数据库").Visible = True '显示数据库表
  7. Dim b As Long
  8.     b = Sheets("数据库").[a65536].End(xlUp).Row + 1
  9.     Sheets("数据库").Select
  10.     Sheets("数据库").Cells(b, 1).Select
  11.     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  12.         :=False, Transpose:=False
  13.     'ActiveWindow.SelectedSheets.Visible = False '隐藏数据库表
  14.     Sheets("入库单").Select
  15.     Range("C6:D14") = ""
  16.     Range("F6:F14") = ""
  17.     Range("M5:M14") = ""
  18.    
  19. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2013-3-31 22:13 | 显示全部楼层
liyh67 发表于 2013-3-31 21:24

谢谢!
可能我没说清。不是在粘贴之前,是在粘贴之后,而且是:
在“数据库”中,粘贴“入库单”的数据之后,删除数据库中A列到N列的空值或0值的行
回复

使用道具 举报

发表于 2013-4-1 13:32 | 显示全部楼层
hannanrenjie 发表于 2013-3-31 22:13
谢谢!
可能我没说清。不是在粘贴之前,是在粘贴之后,而且是:
在“数据库”中,粘贴“入库单”的数据 ...

在复制之前就判断一下,不将空行复制进去不行吗?
如果要将以前的空行删除,可以用定位的方法,就是如下代码:
    Columns("E:E").SpecialCells(xlCellTypeBlanks).EntireRow.Delete


回复

使用道具 举报

 楼主| 发表于 2013-4-1 19:09 | 显示全部楼层
liyh67 发表于 2013-4-1 13:32
在复制之前就判断一下,不将空行复制进去不行吗?
如果要将以前的空行删除,可以用定位的方法,就是如下 ...

不好意思,我是V盲。
今天把代码粘贴进去后运行,入库提交、出库提交粘贴到“数据库”的位置都是对的。
再没有以前,因为空值或0值丢下的空行了。(再不用在”提交“之前,删除无数据行了。)
你的代码已经达到了我要的效果。你的代码在复制之前先判断,并留下空行
我真白,还追问你!
回复

使用道具 举报

发表于 2013-5-24 20:55 | 显示全部楼层
学习了。。。。。。。。。。。。。。。。。。
回复

使用道具 举报

 楼主| 发表于 2013-5-25 22:41 | 显示全部楼层
使用中,如果用懒办法复制物料编码到入库单或出库单中,请使用选择性粘贴。不然粘贴了格式,虽然看起来好像是空的,实际不然,会影响代码的运行!
最近出现一次,请大家注意!不是老师的代码有问题,是我们使用时操作错误。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-7 20:25 , Processed in 0.448334 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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