A Sütununda Yinelenen Kayıt Girişini Engelle - Microsoft Excel


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.

Kod


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

Kod (Açıklamalı)


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

Etiketler
microsoft excel açıklamalı içerik microsoft excel vba