如何在Excel vba中檢查重複值?

如何在Excel vba中檢查重複值?

當使用者複製貼上資料時,Excel 中的資料驗證不起作用。

我希望當用戶將重複資料貼到列中時拋出錯誤訊息。

我正在使用以下程式碼(另一種選擇),但這不是我想要的。我希望在用戶插入資料時檢查這一點,如果有任何問題,則拋出錯誤訊息。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
  Dim rngCell As Range Dim lngLstRow As Long lngLstRow = Sheet1.UsedRange.Rows.Count
  For Each rngCell In Sheet1.Range("A1:A" & lngLstRow) 
    If CountIf(Range("A:A"),A1) > 2 Then
      MsgBox "Please enter unique value " & rngCell.Address
        rngCell.Select
    End If 
  Next 
End Sub

答案1

透過使用該Change事件,我們可以捕獲重複的條目而無需資料驗證:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim RangeOfInterest As Range, Intersection As Range, cell As Range
    
    Set RangeOfInterest = Range("A:A")
    Set Intersection = Intersect(RangeOfInterest, Target)
    If Intersection Is Nothing Then Exit Sub
    
    With Application
        For Each cell In Intersection
            If .WorksheetFunction.CountIf(RangeOfInterest, cell.Value) > 1 Then
                .EnableEvents = False
                    .Undo
                .EnableEvents = True
                MsgBox "duplicates not allowed"
            Exit Sub
            End If
        Next cell
    End With
End Sub

筆記:

  1. 該程式碼可以處理列中的兩個鍵入條目A以及複製/貼上到列中
  2. 此程式碼可以處理多單元格複製/貼上到列中

相關內容