Excel精英培训网

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

[已解决]添加不重复代码

[复制链接]
发表于 2014-6-16 10:54 | 显示全部楼层 |阅读模式
本帖最后由 fangniuji 于 2014-6-16 19:43 编辑

我每天需要将5S扣分报表输入完成后,按一下“YY”按钮,数据即复制到登记簿里,有时点击两下确认按钮,数据就会
复制两次,从而造成汇总数据出错,怎样在VBA里添加代码,使数据不能重复。谢谢各位了!!
最佳答案
2014-6-16 16:24
在你的代码上改了一下。
  1. Sub GG()
  2.     Dim i, r1, r2 As Long
  3.     Dim Flag As Boolean
  4.    
  5.     Sheets("登记簿").Rows.Hidden = False
  6.     Sheets("登记簿").Columns.Hidden = False
  7.     Flag = True
  8.     r1 = Sheets("日数据").[V65536].End(xlUp).Row
  9.     arr = Sheets("日数据").Range("v1:ad" & r1)
  10.     r2 = Sheets("登记簿").[lx65536].End(xlUp).Row
  11.     brr = Sheets("登记簿").Range("LX1:MF" & r2)
  12.     n = UBound(arr) - 2
  13.     s = r2 - n - 2
  14.     If s < 0 Then Flag = False: GoTo aa
  15.     For i = 3 To UBound(arr)
  16.         For j = 1 To UBound(arr, 2)
  17.             If arr(i, j) <> brr(s + i, j) Then Flag = False: GoTo aa
  18.         Next
  19.     Next
  20. aa:
  21.     If Flag = False Then   '如果日数据在登记簿中不存在,复制日数据到登记簿
  22.         Sheets("日数据").Range("v3:ad" & r1).Copy: Sheets("登记簿").Cells(r2 + 1, 336).PasteSpecial xlPasteValues
  23.         For i = r2 To Sheets("登记簿").[lx65536].End(xlUp).Row
  24.             Sheets("登记簿").Cells(i, 335) = i - 2   '自动编号
  25.         Next i
  26.         MsgBox "数据保存结束!"
  27.     Else
  28.         MsgBox "日数据已存在!"
  29.     End If
  30.     Application.CutCopyMode = False

  31. End Sub
复制代码

添加不重复代码.zip

370.35 KB, 下载次数: 30

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-6-16 11:24 | 显示全部楼层
可以在日数据添加个编号,判断一下登记簿有没有这个编号,没有就保存,有就退出
回复

使用道具 举报

发表于 2014-6-16 11:26 | 显示全部楼层
是否可以这样,添加一个计数器,打开的时候初始化为0,运行一次YY后+1,不能再点。只有重新打开文件后才可以点击。
或者,数据复制到等级簿之后,对前面的数据进行清除。
回复

使用道具 举报

发表于 2014-6-16 16:24 | 显示全部楼层    本楼为最佳答案   
在你的代码上改了一下。
  1. Sub GG()
  2.     Dim i, r1, r2 As Long
  3.     Dim Flag As Boolean
  4.    
  5.     Sheets("登记簿").Rows.Hidden = False
  6.     Sheets("登记簿").Columns.Hidden = False
  7.     Flag = True
  8.     r1 = Sheets("日数据").[V65536].End(xlUp).Row
  9.     arr = Sheets("日数据").Range("v1:ad" & r1)
  10.     r2 = Sheets("登记簿").[lx65536].End(xlUp).Row
  11.     brr = Sheets("登记簿").Range("LX1:MF" & r2)
  12.     n = UBound(arr) - 2
  13.     s = r2 - n - 2
  14.     If s < 0 Then Flag = False: GoTo aa
  15.     For i = 3 To UBound(arr)
  16.         For j = 1 To UBound(arr, 2)
  17.             If arr(i, j) <> brr(s + i, j) Then Flag = False: GoTo aa
  18.         Next
  19.     Next
  20. aa:
  21.     If Flag = False Then   '如果日数据在登记簿中不存在,复制日数据到登记簿
  22.         Sheets("日数据").Range("v3:ad" & r1).Copy: Sheets("登记簿").Cells(r2 + 1, 336).PasteSpecial xlPasteValues
  23.         For i = r2 To Sheets("登记簿").[lx65536].End(xlUp).Row
  24.             Sheets("登记簿").Cells(i, 335) = i - 2   '自动编号
  25.         Next i
  26.         MsgBox "数据保存结束!"
  27.     Else
  28.         MsgBox "日数据已存在!"
  29.     End If
  30.     Application.CutCopyMode = False

  31. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2014-6-16 19:44 | 显示全部楼层
grf1973 发表于 2014-6-16 16:24
在你的代码上改了一下。

谢谢你的帮忙,谢谢!!!!
回复

使用道具 举报

 楼主| 发表于 2014-6-18 18:07 | 显示全部楼层
本帖最后由 fangniuji 于 2014-6-19 12:34 编辑
grf1973 发表于 2014-6-16 16:24
在你的代码上改了一下。


这个报表要如何添加代码语句:让代码不重复复制。谢谢!!!!

品保系统出货数据20.zip

1.05 MB, 下载次数: 7

回复

使用道具 举报

发表于 2014-6-19 15:35 | 显示全部楼层
输入界面中判断前三行所有项字符串累加是否和登记簿最后一条记录的对应项字符串累加相同。

品保系统出货数据20.rar

1 MB, 下载次数: 10

回复

使用道具 举报

 楼主| 发表于 2014-6-19 17:20 | 显示全部楼层
grf1973 发表于 2014-6-19 15:35
输入界面中判断前三行所有项字符串累加是否和登记簿最后一条记录的对应项字符串累加相同。

http://www.excelpx.com/thread-327179-1-1.html谢谢你,你把答案放在这链接,我给你一个“OK”。
回复

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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