mükerrer kayıtların engellenmesi

Katılım
13 Eylül 2008
Mesajlar
24
Excel Vers. ve Dili
Excel 2003
Türkçe
Merhabalar,

Emeği geçen herkese çok teşekkür ederim. Yeni üye oldum. Örnekler çok zengin. Ama ben mi bulamadım bilmiyorum. Sorunum çözümsüz mü ?
Aşağıdaki bağlantıda bu konuda çok örnek var. Bunları inceledim. Fakat ekteki gibi mükerrer kontrol yapan bir koda, formüle ulaşamadım. Yardımlarınızı rica ederim.
http://www.excel.web.tr/forumdisplay.php?f=120

Tablomdaki mükerrer kontrolü "Veri Doğrulama" ile yaptım. Mükemmel çalışıyor gibi görünsede dışarıdan veri koyalandığında (kopyala-yapıştır) veya tablo içinde sürükleme yapmamız halinde bunu algılamıyor. Elle girişlerde hatasız çalışıyor.
Kodlara baktığımda mükerrer satırı engelleyen örnekler çok. Ama bunlar ya hücreyi koparıyor (yukarı taşıyor) ya da satırı siliyor.
Veri Doğrulama örneğimdeki gibi sadece girilen değeri silmesi (hatta Yeniden Dene" ye tıkladığımızda mükerrer hücrenin içinde beklemesi) mümkün olacak bir kod var mıdır?
Saygılarımla.
 

tahsinanarat

Altın Üye
Katılım
14 Mart 2005
Mesajlar
2,167
Excel Vers. ve Dili
Ofis 2019 Türkçe
Altın Üyelik Bitiş Tarihi
27-05-2028
Mükerrrer kayıt girdi uyarısı

Yukarıda ne istediğinizi pek anlamamakla birlikte, eğer a sutunuma aynı cins malzeme ismi yazıldığında uyarı vermesini istiyor ve sonucu evet ve hayır ile siz belirlemek istiyorsanız ekteki dosyayı inceleyiniz, yok farklı birşey istiyorsanız açık seçik izah edermisiniz. Kolay gelsin
 
Katılım
13 Eylül 2008
Mesajlar
24
Excel Vers. ve Dili
Excel 2003
Türkçe
mükerrer kayıt önleme

Sn tahsinanarat

Bir örnek ile anlatmaya çalıştım. Mükerrer kaydı önleyen bir kod var ve bunu iyileştirmek istiyorum.

Yardımlarınız için teşekkür ederim.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Dosyadaki mükerrer1 sayfasının kod sayfasındaki kodu silin ve yerine aşağıdakini kopyalayarak deneyin.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Intersect(Target, [c2:c65536]) Is Nothing Then Exit Sub
If WorksheetFunction.CountIf([c:c], Target) > 1 Then
MsgBox ("Bu veriyi daha önce girdiniz. Lütfen listenizi kontrol ediniz."), vbCritical + vbRetryCancel, "Mükerrer Kayıt"
Target.Select
SendKeys "{F2}"
For a = 1 To Len(Target)
SendKeys "+{left}"
Next
End If
End Sub
veya çift girilen veriyi silmek isterseniz aşağıdaki gibide kullanabilirsiniz.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Intersect(Target, [c2:c65536]) Is Nothing Then Exit Sub
If WorksheetFunction.CountIf([c:c], Target) > 1 Then
MsgBox ("Bu veriyi daha önce girdiniz. Lütfen listenizi kontrol ediniz."), vbCritical + vbRetryCancel, "Mükerrer Kayıt"
Target.Select
Target = ""
End If
End Sub
 
Katılım
13 Eylül 2008
Mesajlar
24
Excel Vers. ve Dili
Excel 2003
Türkçe
mükerrer kayıtların önlenmesi

Levent Bey,
İlk verdiğiniz kodda "ESC" tuşuna basıldığında mükerrer veriyi artık görmüyor. Diğer yandan mükerrer satırın üzerinde odaklanması mükemmel.
İkinci kodda biraz değişiklik yapabilirseniz bu kod tamam olacak. Mükerrer satırı gördüğünde; o hücrede odaklansın. Yeniden deneye tıkladımda farklı bir değer girmezsem bırakmasın. İptal 'e bastığımda silsin.
Saygılarımla.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Bu durumda ilk kodu silip aşağıdaki kodları aynı modüle kopyalayarak deneyin.

Kod:
Dim deg
 
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [c2:c65536]) Is Nothing Or Selection.Count > 1 Then Exit Sub
deg = Target.Address
If WorksheetFunction.CountIf([c:c], Target) > 1 Then
Target.Select
sor = MsgBox("Bu veriyi daha önce girdiniz. Lütfen listenizi kontrol ediniz.", vbCritical + vbRetryCancel, "Mükerrer Kayıt")
If sor = vbCancel Then Target = ""
End If
End Sub
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If deg = "" Then Exit Sub
If WorksheetFunction.CountIf([c:c], Range(deg)) > 1 Then Range(deg).Select
End Sub
 
Katılım
13 Eylül 2008
Mesajlar
24
Excel Vers. ve Dili
Excel 2003
Türkçe
Hocam ilginize teşekkür ederim. tamam demek istedim fakat;

tabloya farklı bir dosyadan veri koyalayıp-yapıştırdığınızda bunu algılamıyor.

Bana en uygun olanı seçtim. Önceki yazınızda verdiğiniz kodlardan ikincisi. Bu her yönüyle mükemmel çalışıyor. (odaklanma hariç)
Bunu kullandığımda tam kontrol sağlamış olacağım.

Saolun.
 
Üst