【问题标题】:Highlight duplicate and ask to delete duplicates突出显示重复项并要求删除重复项
【发布时间】:2022-01-09 18:42:10
【问题描述】:

在 Excel 表中,用户在 A 列到 H 列中输入数据

in col A - id
   col B - Name
   col C - DOB
   col D - Mobile
   col E - Email id
   col F - Res-Address
   col G - City
   col H - State

在此数据中,用户必须在 col E 中的整行上找到并删除重复项 - 电子邮件 ID,如果用户输入具有相同电子邮件 ID 的数据,然后已经存在的数据应在整行上用颜色突出显示,并将显示 Msgbox You输入重复数据已存在 如果要删除重复单击,请参见行已突出显示(是)

在这里我找到了一个 vba 代码并应用于我的工作表,以避免在用户输入任何重复数据时自动重复

我在这段代码中得到(编译错误)


Private Sub Worksheet_Change(ByVal Target As Range)
Dim rCell As Range
Dim cell As String
Dim lCount As Long

Set rRange = Range("E1", Range("E" & Rows.Count).End(xlUp))
lCount = rRange.Rows.Count

For lCount = lCount To 1 Step -1
    With rRange.Cells(lCount, 1)
        If WorksheetFunction.CountIf(rRange, .Value) > 1 Then
           .EntireRow.Interior.ColorIndex = 27
        MsgBox "You Enter Duplicate Data is Already Exist See Row has Highlighted " & vbNewLine & " If you want to Delete Duplicate Click (Yes) + vbYesNo + vbDefaultButton2 = vbYes Then"
           .EntireRow.Delete
            MsgBox "Duplicate Entry Deleted"
        End If
        End If
    End With
Next lCount

End Sub

【问题讨论】:

  • 那么错误是什么?
  • 编译错误变量未定义
  • 在此站点中搜索“[vba] 错误变量未定义”显示 1114 个引用。我相信他们中的许多人已经给出了答案。
  • 这能回答你的问题吗? Variable not defined error upon execution

标签: excel vba


【解决方案1】:

首先,删除第二个End If

其次,您的模块顶部必须有Option Explicit。如果你想保留它,那么你需要定义rRange

如果您删除 Option Explicit,它应该会消失。前者是最好的方法。

这编译...

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim lCount As Long
    
    Dim rRange As Range

    Set rRange = Range("E1", Range("E" & Rows.Count).End(xlUp))
    lCount = rRange.Rows.Count
    
    For lCount = lCount To 1 Step -1
        With rRange.Cells(lCount, 1)
            If WorksheetFunction.CountIf(rRange, .Value) > 1 Then
               .EntireRow.Interior.ColorIndex = 27
            MsgBox "You Enter Duplicate Data is Already Exist See Row has Highlighted " & vbNewLine & " If you want to Delete Duplicate Click (Yes) + vbYesNo + vbDefaultButton2 = vbYes Then"
               .EntireRow.Delete
                MsgBox "Duplicate Entry Deleted"
            End If
        End With
    Next lCount
End Sub

...但不确定它是否符合您的要求。

【讨论】:

  • 谢谢@Skin,它正在工作我已将 msgbox 更改为 ok MsgBox "You Enter Duplicate Data is Already Exist See Row has Highlighted " & vbNewLine & " If you want to Delete Duplicate Click (Ok) " 因为仅在 msgbox 中(确定)仅单击选项
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-07
  • 1970-01-01
  • 2012-04-18
  • 2020-05-02
  • 1970-01-01
  • 1970-01-01
  • 2021-02-09
相关资源
最近更新 更多