Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: 安全网

[已解决]求助禁止录入重复数据的VBA代码

[复制链接]
 楼主| 发表于 2016-1-4 08:37 | 显示全部楼层
zjdh 发表于 2016-1-4 08:05
求助者是说录入,要解决你的要求,简单:

If Len(Cells(W, 3)) * Len(Cells(W, 4)) * Len(Cells(W, 5) ...

ARR(I, 6) = Cells(W, 8) 能否解释下为什么事6/8有时候是7/8,是什么规则
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

发表于 2016-1-4 09:16 | 显示全部楼层
你数一下从B列到H列共几列?
你数一下从C列到H列共几列?
H列是工作表中第几列?
回复

使用道具 举报

 楼主| 发表于 2016-1-4 10:31 | 显示全部楼层
zjdh 发表于 2016-1-4 09:16
你数一下从B列到H列共几列?
你数一下从C列到H列共几列?
H列是工作表中第几列?

哦,我明白了。因为我设置的时候总是从第1列开始,所以参数就是错得


回复

使用道具 举报

 楼主| 发表于 2016-1-4 17:22 | 显示全部楼层
zjdh 发表于 2016-1-4 09:16
你数一下从B列到H列共几列?
你数一下从C列到H列共几列?
H列是工作表中第几列?

现在是如果输第5行的数据时,如果与第3/4行都重复,都提示,但只删除当前的第5行
QQ图片20160104171341.png
回复

使用道具 举报

发表于 2016-1-4 18:43 | 显示全部楼层
对啊,当然是当前输入的数据啦,第四行是上一次输入的应该已经处理过啦!
回复

使用道具 举报

 楼主| 发表于 2016-1-4 20:37 | 显示全部楼层
zjdh 发表于 2016-1-4 18:43
对啊,当然是当前输入的数据啦,第四行是上一次输入的应该已经处理过啦!

就是输入第5行数据时,提示栏提示与3/4行数据重复,3/4行数据用黄色颜色填充
回复

使用道具 举报

发表于 2016-1-4 21:01 | 显示全部楼层
学习一下!!
回复

使用道具 举报

发表于 2016-1-5 08:03 | 显示全部楼层
安全网 发表于 2016-1-4 20:37
就是输入第5行数据时,提示栏提示与3/4行数据重复,3/4行数据用黄色颜色填充

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column > 2 And Target.Column < 9 Then
        W = Target.Row
        If Len(Cells(W, 3)) * Len(Cells(W, 4)) * Len(Cells(W, 5)) * Len(Cells(W, 8)) <> 0 And Target.Count = 1 Then
            Application.EnableEvents = False
            ARR = Range("C1:H" & Range("C65536").End(3).Row - 1)
            For I = 1 To UBound(ARR)
                If ARR(I, 1) = Cells(W, 3) And ARR(I, 2) = Cells(W, 4) And ARR(I, 3) = Cells(W, 5) And ARR(I, 6) = Cells(W, 8) Then
                    Range("C" & I & ":H" & I).Interior.ColorIndex = 6
                    If MsgBox("输入数据与第 " & I & " 行相同!是否需要删除?", 4 + 32 + 256) = 6 Then
                        Rows(W).Delete
                        Range("C2:H" & I).Interior.ColorIndex = 0
                    End If
                    'Exit For
                End If
            Next
            Application.EnableEvents = True
        End If
    End If
End Sub
回复

使用道具 举报

 楼主| 发表于 2016-1-5 09:25 | 显示全部楼层
zjdh 发表于 2016-1-5 08:03
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column > 2 And Target.Column <  ...

谢谢!正是我所需求的
回复

使用道具 举报

 楼主| 发表于 2016-1-7 08:38 | 显示全部楼层
zjdh 发表于 2016-1-5 08:03
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column > 2 And Target.Column <  ...

                   Range("C" & I & ":H" & I).Interior.ColorIndex = 6
                    If MsgBox("输入数据与第 " & I & " 行相同!是否需要删除?", 4 + 32 + 256) = 6 Then
                        Rows(W).Delete
                        Range("C2:H" & I).Interior.ColorIndex = 0这一行的是否能设置只将 Range("C" & I & ":H" & I).Interior.ColorIndex = 6填充颜色的单元格,其他单元格有填充就不改变


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-5 14:17 , Processed in 0.258972 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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