• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Excellin beni uyarmasını istiyorum bu nasıl mümkün olur.

Katılım
23 Eylül 2006
Mesajlar
57
Excel Vers. ve Dili
2003 türkçe
arkadaşlar benim yardımınızı istediğim konu. bir sütuna yazdığım değerin daha önceden hangi sırada yazılmış olduğunu uyarmasıyla ilgili ancak şöyle bir durum var aynı değeri girmemi kısıtlamamalı yani sadece uyarsın ancak değeri istemem halinde tekrar girebileyim. bu nasıl mümkün olur yardımcı olursanız sevinirim. ilgilenen arkadaşlara şimdiden teşekkür ediyorum.

aşağıya bir resim koydum belki sorunu anlamanızda daha iyi olur diye

excellaf3.jpg
 
Aşağıdaki kodlar belki size fikir verebilir.

B kolonunda çift kayıt girdiğiniz anda uyarıda bulunup, ilgili satırı seçmektedir.Siz kendinize göre uyarlayabilirsiniz.

Bu kodları sayfanın VBE bölümüne kopyalamanız gerekmektedir.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Intersect(Target, [B8:B500]) Is Nothing Then Exit Sub
veri = Target
say = WorksheetFunction.CountIf(Range("B8:B" & Target.Row - 1), Target)
If say > 0 Then
MsgBox "Bu Kişinin Daha Önceden Kaydı Var!"
'Target.Select
'Target = ""
For Each alan In [B8:B500]
If alan = veri Then alan.Select
Next
End If
End Sub
 
Aşağıdaki kodlar belki size fikir verebilir.

B kolonunda çift kayıt girdiğiniz anda uyarıda bulunup, ilgili satırı seçmektedir.Siz kendinize göre uyarlayabilirsiniz.

Bu kodları sayfanın VBE bölümüne kopyalamanız gerekmektedir.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Intersect(Target, [B8:B500]) Is Nothing Then Exit Sub
veri = Target
say = WorksheetFunction.CountIf(Range("B8:B" & Target.Row - 1), Target)
If say > 0 Then
MsgBox "Bu Kişinin Daha Önceden Kaydı Var!"
'Target.Select
'Target = ""
For Each alan In [B8:B500]
If alan = veri Then alan.Select
Next
End If
End Sub


Sn. Ripek ilginiz için teşekkür ederim. ancak nasıl yapıldığı hakkında bilgi verebilirmisin VBE dediğiniz Visual Bacic Düzenleyici değil mi buraya kopyalayıp yapıştırdım. b8 ile b500 hücresi arasında rakam da denedim yazı da ancak olmadı açıklayabilirseniz sevinirim teşekkürler
 
Son düzenleme:
Visual Basic Düzenleyicisini (VBE) açtığınızda sağdaki ekrandan bu kodları kullanacağınız sayfanın ismini çift tıklayınız.Sonra solda açılan boş alana bu kodları yapıştırınız.
 
Visual Basic Düzenleyicisini (VBE) açtığınızda sağdaki ekrandan bu kodları kullanacağınız sayfanın ismini çift tıklayınız.Sonra solda açılan boş alana bu kodları yapıştırınız.

Sayın Ripek;
vermiş olduğunuz kodu girmeyi başardım. kodları girerken hata yapıyormuşum. ancak şöyle bir durum var ki B8 hücresinden sonra hangi değeri girersem gireyim "Bu Kişinin Kaydı Var" iletisi alıyorum bunu düzeltebilirmiyim acaba yada başka bir yolu varmıdır. istediğimişlemi yapmak için
 
Normalde ilk kayıttan farklı bir sayı girdiğinizde herhangi bir uyarı vermeden kabul etmesi gerekiyor.

Burada mutlaka mükerrer ilk kaydın satırını öğrenmek zorundamısınız? Zorunda değilseniz, bana sadece mükerrer olup olmadığını hatırlatsın istiyorsanız daha basit ve kullanışlı bir yöntem söyleyeceğim.
 
Normalde ilk kayıttan farklı bir sayı girdiğinizde herhangi bir uyarı vermeden kabul etmesi gerekiyor.

Burada mutlaka mükerrer ilk kaydın satırını öğrenmek zorundamısınız? Zorunda değilseniz, bana sadece mükerrer olup olmadığını hatırlatsın istiyorsanız daha basit ve kullanışlı bir yöntem söyleyeceğim.


Sn.Ripek; o kadar da önemli değil Ctrl+f yaparak ilk kayıdı bulabilirim. Zaten bu yöntem de göstermiyor hangi satırda yazıldığını, önemli olan beni uyarması.
 
Eğer ilgili satırı görmek istemiyorsanız Veri Doğrulama ile bunu yapabilirsiniz.

Aşağıdaki linteki konunun sonunda bununla ilgili bir çalışma var.

http://www.excel.web.tr/showthread.php?t=2830

Yok eğer illaki mükerrer satırları görmek isterseniz verdiğim kodların yerine aşağıdakileri kopyalayın.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Intersect(Target, [B8:B500]) Is Nothing Then Exit Sub
veri = Target
For Each alan In Range("B8:B" & Target.Row - 1)
If alan = veri Then
alan.Select
MsgBox "Bu Kişinin Daha Önceden Kaydı Var!"
Target.Offset(1, 0).Select
End If
Next
End Sub
 
Eğer ilgili satırı görmek istemiyorsanız Veri Doğrulama ile bunu yapabilirsiniz.

Aşağıdaki linteki konunun sonunda bununla ilgili bir çalışma var.

http://www.excel.web.tr/showthread.php?t=2830

Sayın Ripek;
Doğrulama yöntemi ile yaptığım zaman aynı değeri tekrar giremiyorum ancak benim isteğime bağlı olarak aynı değeri girebilmem de önemli sadece beni uyarmasını istiyorum. size yük olduğum için üzgünüm ancak bu sorumun cevabı benim için önemli teşekkür ederim.
 
Selamlar,

Sn. ripek 'in size sunduğu kodu biraz değiştirerek ekteki örnek dosyayı hazırladım. Umarım işinize yarar.
 
Sn. 007hasanayik

Veri Doğrulama ekranında ekli resimdeki düzenlemeyi yaparsanız sanırım istediğiniz olacaktır.
 
Son düzenleme:
Selamlar,

Sn. ripek 'in size sunduğu kodu biraz değiştirerek ekteki örnek dosyayı hazırladım. Umarım işinize yarar.


Sayın Cost_Control;
Tam anlamıyla istediğim sizin önerdiğiniz yöntemdi çabanız ve paylaşımınız için çok teşekkür ederim.

Sn. 007hasanayik

Veri Doğrulama ekranında ekli resimdeki düzenlemeyi yaparsanız sanırım istediğiniz olacaktır.

Sayın Ripek;
Bıkmadan usanmadan dün geceden beri benim sorunumla ilgilendiğiniz için özellikle teşekkür etmek istedim. emeğiniz için sağolun.
 
Koşullu biçimlendirmede Eğersay kullan

007hasanayik arkadaşım;
Buda başka bir yol
ben en kolay yolla bunu koşullu biçimlendirmeye eğersay komutu girerek yaptım bunu deneyebilirsin. Eğersay komutu ile saydırırsın değeri 1 den büyük ise sana farklı renk veye biçimle gösterir. Eğersay komutu giremezsen dosya örneği göndermenle yapabilirim.

Eğersay ve koşullu biçimlendirme yaparsan aynı girdiğin değerleri gösterir ama giriş yapmanı engellemez. sadece işaretlemiş olursun.

Örnek olarak bir dosya gönderiyorum sana inşallah işini görür..
 
Son düzenleme:
007hasanayik arkadaşım;
Buda başka bir yol
ben en kolay yolla bunu koşullu biçimlendirmeye eğersay komutu girerek yaptım bunu deneyebilirsin. Eğersay komutu ile saydırırsın değeri 1 den büyük ise sana farklı renk veye biçimle gösterir. Eğersay komutu giremezsen dosya örneği göndermenle yapabilirim.

Eğersay ve koşullu biçimlendirme yaparsan aynı girdiğin değerleri gösterir ama giriş yapmanı engellemez. sadece işaretlemiş olursun.

Örnek olarak bir dosya gönderiyorum sana inşallah işini görür..

forum üzerinden dosya nasıl eklenir bilmiyorum ancak şöyle birşey yapabilirim rapidle gönderebilirim yada mümkünse sen formülü gönderebilirmisin

Selamlar,

Sn. ripek 'in size sunduğu kodu biraz değiştirerek ekteki örnek dosyayı hazırladım. Umarım işinize yarar.

Adı Soyadı ve Seri Numarası olarak bulunan iki sütuna yazmam gerekli bu makroyu birinde şahısların isimleri ve soyadları, birinde de ise seri numarası yazıyor her iki sütundaki değerleri de araştırmasını istiyorum. yani yazdığım bir ad soyadı tekrar yazınca uyarmasını veya yazdığım bir seri numarasını tekrar yazınca uyarmasını istiyorum. (aynı seri numarası olması halinde isimlerin farklı yada aynı olması önemli değil, İsimlerin aynı olması halinde seri numaralaranının aynı yada farklı olması önemli değil) bu şekilde yapmak isteyince vermiş olduğun makroyu alt alta iki kere giriyorum ancak en altta makronun son satırında bulunan End If: End Sub hata uyarısı veriyor bunu ne ile değiştirmem lazım yada makroyu nasıl düzenlemem gerekli Ad soyad J3:J65536 arası seri numarası ise Q3:Q65536 arası ilginize teşekkürler
 
dosyayı ekte gnöderiyorum dosya üzerinde hangi sütunlardaki verilerin denetlenmesini istediğimi belirttim teşekkürler
 
Selamlar,

Son eklediğiniz dosyaya göre aşağıdaki kodu kullanabilirsiniz.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Intersect(Target, [J3:J65536,Q3:Q65536]) Is Nothing Then Exit Sub
    If IsEmpty(Target) Or InStr(1, Target.Address, ":") <> 0 Then Exit Sub
    
    If Target.Column = 10 Then
    SAY = WorksheetFunction.CountIf([J3:J65536], Target)
    If SAY > 1 Then
    For Each ALAN In Range("J3:J" & [J65536].End(3).Row)
    If ALAN = Target Then
    If ADRES = "" Then
    ADRES = ALAN.Address(False, False)
    Else: ADRES = ADRES & " - " & ALAN.Address(False, False)
    End If: End If: Next
    GoTo UYARI
    End If: End If
    
    If Target.Column = 17 Then
    SAY = WorksheetFunction.CountIf([Q3:Q65536], Target)
    If SAY > 1 Then
    For Each ALAN In Range("Q3:Q" & [Q65536].End(3).Row)
    If ALAN = Target Then
    If ADRES = "" Then
    ADRES = ALAN.Address(False, False)
    Else: ADRES = ADRES & " - " & ALAN.Address(False, False)
    End If: End If: Next

UYARI: ONAY = MsgBox("Bu Kay&#305;t Daha &#214;nceden A&#351;a&#287;&#305;daki H&#252;crelerde Girilmi&#351;tir !" & Chr(10) & Chr(10) & ADRES & Chr(10) & Chr(10) & "&#304;&#351;leme Devam Etmek &#304;stiyor musunuz?", vbYesNo + vbCritical, "D&#304;KKAT !")
    If ONAY = vbNo Then
    Target = ""
    Target.Select
    Exit Sub: End If
    Target.Offset(1, 0).Select
    End If: End If
End Sub
 
Selamlar,

Son eklediğiniz dosyaya göre aşağıdaki kodu kullanabilirsiniz.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error Resume Next
    If Intersect(Target, [J3:J65536,Q3:Q65536]) Is Nothing Then Exit Sub
    If IsEmpty(Target) Or InStr(1, Target.Address, ":") <> 0 Then Exit Sub
    
    If Target.Column = 10 Then
    SAY = WorksheetFunction.CountIf([J3:J65536], Target)
    If SAY > 1 Then
    For Each ALAN In Range("J3:J" & [J65536].End(3).Row)
    If ALAN = Target Then
    If ADRES = "" Then
    ADRES = ALAN.Address(False, False)
    Else: ADRES = ADRES & " - " & ALAN.Address(False, False)
    End If: End If: Next
    GoTo UYARI
    End If: End If
    
    If Target.Column = 17 Then
    SAY = WorksheetFunction.CountIf([Q3:Q65536], Target)
    If SAY > 1 Then
    For Each ALAN In Range("Q3:Q" & [Q65536].End(3).Row)
    If ALAN = Target Then
    If ADRES = "" Then
    ADRES = ALAN.Address(False, False)
    Else: ADRES = ADRES & " - " & ALAN.Address(False, False)
    End If: End If: Next

UYARI: ONAY = MsgBox("Bu Kayıt Daha Önceden Aşağıdaki Hücrelerde Girilmiştir !" & Chr(10) & Chr(10) & ADRES & Chr(10) & Chr(10) & "İşleme Devam Etmek İstiyor musunuz?", vbYesNo + vbCritical, "DİKKAT !")
    If ONAY = vbNo Then
    Target = ""
    Target.Select
    Exit Sub: End If
    Target.Offset(1, 0).Select
    End If: End If
End Sub

Sayın Cost_Control evet tam istediğim gibi oldu emeğinize teşekkür ederim. yüreğinize sağlık. iyi günler
 
Koşullu biçimlendirme

gönderdiğin dosyanın koşullu biçimlendirmeyle biçimlenmiş halide burada arkadaşım.
 
Son düzenleme:
Geri
Üst