Aşağı doğru yapılan veri eklemesi durumunda eklenen her veri için kontrol yapar. Eğer eklenen veri üstteki satırlarda varsa son eklenen kaydı siler ve o hücre geri seçili hale gelir.
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim veri As Range
Dim say As Long
On Error Resume Next
If Intersect(Target, [A1:A1048576]) Is Nothing Then Exit Sub
veri = Target
say = WorksheetFunction.CountIf(Range("A1:A" & Target.Row - 1), Target)
If say > 0 Then
Target.Select
Target = ""
End If
End Sub
Option Explicit
'--------------------------------------------------
'Çalışma sayfası içinde değişiklik
'olduğunda otomatik olarak çalış.
'--------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
'--------------------------------------------------
'Değişkenler
'--------------------------------------------------
Dim veri As Range
Dim say As Long
'--------------------------------------------------
'Hataları görmezden gel.
'--------------------------------------------------
On Error Resume Next
'--------------------------------------------------
'Eğer olay A sütunu dışında
'gerçekleşiyorsa çalışmasın.
'--------------------------------------------------
If Intersect(Target, [A1:A1048576]) Is Nothing Then Exit Sub
'--------------------------------------------------
'Eğer A sütunu içinde değişiklik olmuşsa
'ilgili alanı (Target) veri değişkenine ata.
'--------------------------------------------------
veri = Target
'--------------------------------------------------
'Değişiklik yapılmış hücrenin satır sayısını al,
'A1 hücresinden bu satıra kadar girilen kaydın
'kaç tane olduğunu say.
'--------------------------------------------------
say = WorksheetFunction.CountIf(Range("A1:A" & Target.Row - 1), Target)
'--------------------------------------------------
'Eğer sayı sıfırdan büyük çıkarsa
'benzersiz kayıt var demektir.
'--------------------------------------------------
If say > 0 Then
'--------------------------------------------------
'Kayıt girişi yapılmış hücreyi seç.
'--------------------------------------------------
Target.Select
'--------------------------------------------------
'İlgili alanı temizle.
'--------------------------------------------------
Target = ""
End If
End Sub