![如何在Excel vba中檢查重複值?](https://rvso.com/image/1628808/%E5%A6%82%E4%BD%95%E5%9C%A8Excel%20vba%E4%B8%AD%E6%AA%A2%E6%9F%A5%E9%87%8D%E8%A4%87%E5%80%BC%EF%BC%9F.png)
當使用者複製貼上資料時,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
筆記:
- 該程式碼可以處理列中的兩個鍵入條目A以及複製/貼上到列中
- 此程式碼可以處理多單元格複製/貼上到列中