사용자가 데이터를 복사하여 붙여넣을 때 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
메모:
- 코드는 열에 입력된 두 항목을 모두 처리할 수 있습니다.ㅏ열에 복사/붙여넣기
- 코드는 다중 셀 복사/열에 붙여넣기를 처리할 수 있습니다.