• DİKKAT

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

Bir Sutuna eklenen verinin başka bir sütundaki verisine göre girişe izin verme

Katılım
22 Ekim 2009
Mesajlar
151
Excel Vers. ve Dili
2007&2010
Merhaba Hocalarım.

Amacım alt satırlara yeni kayıt yapıldığında A kolonundaki aynı seri sumarasında varsa ve J kolonundaki statüsü Devam ise uyarı versin bu seri no devam eden birine ait kontrol edin gibi.

Aynı seri no varsa ve J kolonundaki statüsü Ayrıldı veya D.izni veya Atama ise girişe engel olmasın .

bu her yeni kayıtta kontrol edilsin.

Sayfaya Bu şekilde kontrol yapacak koda ihtiyacım var (dosyadad açıklama yaptım)

yardımcı olabilirseniz çok sevinirim
saygılarımla
 

Ekli dosyalar

Merhaba,

Bu işlemi veri doğrulama/özel bölümüne yazarak da yapabilirsiniz.

A1:A50 ( 50 değerini artırabilirsiniz) aralığını seçin doğrulamada özel bölümüne yazıp hata iletisi mesajını belirleyip tamam ile işlemi bitirin.

Kod:
=YADA(EĞERSAY($A$1:A1;A2)=0;J2<>"Devam")

Not: Detaylı deneme yapmadım.

.
 
Yaptım ama bir uyarı falan vermedi yanlış anlaşılma olabilirmi acaba.

Amacım tam şudur. örneğin A101 e yeni kayıt yapıcam seri numarsını A101 e yazdım yan hücreye geçtiğim anda A101 e girdiğim kayıt A kolonunda varmı? varsa var olan kayıdın J kolonundaki statüsü devam devam ise hata uyarısı versin.

Varsa ve statüsü Devam değilse birşey yapmasın..

Amcaım aynı seri nosunu devam statülü kaydı varken yeniden geişinin engellenmesi..

Saygılarımla..
 
Merhaba,

Ömer beyin önerdiği formüldeki J2 ifadesini J1 olarak değiştirip deneyin.
 
Korhan Bey yazınca fark ettim;

"A1:A50 ( 50 değerini artırabilirsiniz) aralığını seçin "

Diğer mesajda bu şekilde yazmışım.
A2:A50 olarak yazmam gerekirdi, yazım hatası yapmışım. Formül aynı kalarak aralık seçimini değiştirip tekrar denemenizi rica ederim.

Not: Detaylı deneme yapmadım.

.
 
Hocam veri doğrulamaya uyguladım ancak istediğim gibi çalışmıyor formulde kolonda a kolonunda varmı yokmutya bakıyor ancak devamı verinin girildiği satırda bakıyor anladığım.

benim istediğim A100. satıra diyelimki veri girdim 11111 olsun ancak A kolonunda 55. satırda daha önce tanımlanmış 11111 var ve 55. satır J kolonundaki statüsüde devam eğer bu şekildeyse bu numaranın daha önce kaydı var ve statüsü Devam şekilnde uyarı versin.. ama aynı şekilde 100. satıra girdiğim 11111 sayısı 55. satırda var ancak 55. satır J kolonundaki statüsü devam değil başka birşey ozaman giriş yapılabilsin..

Umarım anlatabilmişimdir biraz karıştı galiba umarım yapılabilir. sayfaya kod olarakda eklenebilir koşullu biçimlendimede olabilir nasıl olursa

ama Kod olursa çok daha iyi olur..

Teşekkürler..
 
Konuyu şimdi anladım. Yalnız veri girişi sıralı mı yapılıyor. Yani son giriş 100. satırda olsun diyelim. Başa dönüp 41. satıra veri girişi olabiliyor mu?

Ek olarak sanırım doğrulama ile değil de makro ile çözüm mü istiyorsunuz.
 
Evet hocam sıralı giriş yapılıyor.. 100-101-102 şeklinde sayfa içine makro olabilirse yazılıp hücreden çıkıldığı anda kontrolü yapsın doğrulama ilede deneyebiliriz ancak o kolonda hücre kopyalayıp başka bir yere yapıştırılırsa doğrulamada taşınmış oluyor osebeple kodla olursa iyi olur ancak doğrulam örneğide alabilirm.

tşk.
 
Bu şekilde dener misiniz. Uyarıdan sonra verinin silinmesini istemiyorsanız kırmızı satırı silersiniz.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
 
    Dim c As Range, Adr As String
 
    If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub
    
    If Selection.Count > 1 Then Exit Sub
    
    With Target
        If .Row < 3 Then Exit Sub
        If .Value = "" Then Exit Sub
        Set c = Range("A2:A" & .Row - 1).Find(.Value, , xlValues, xlWhole)
        If Not c Is Nothing Then
            Adr = c.Address
            Do
                If Cells(c.Row, "J") = "Devam" Then
                    MsgBox .Value & _
                    " - Numaranın daha önce kaydı var ve statüsü Devam."
                    [COLOR=red].Value = ""[/COLOR]
                    Exit Sub
                End If
            Loop While Not c Is Nothing And c.Address <> Adr
        End If
    End With
 
End Sub

Not: Detaylı deneme yapmadım.

.
 
aşağıdaki şekilde hata aldım hocam sayfanın kod bölümüne kledim doğrudur değil mi ?

ekran görüntüsü ektedir.

Kolonu B kolonu ve K kolonu olarak değiştirdim
 

Ekli dosyalar

  • ekran.jpg
    ekran.jpg
    98.3 KB · Görüntüleme: 6
Sayfada çalıştırdığınız Change altında başka kodunuz da var sanırım. İkisini ayrı ayrı değil birleştirmek gerekir. Kodlarınız nedir?
 
Evet Hocam aşağıdaki gibi g kolonunda bir satırda değişiklik yapıldığında m kolonuna tarih atıyor iki kodu birleştirebilirseniz sevinirim..

'Private Sub Worksheet_Change(ByVal Target As Range)
'If Intersect(Target, [G:G]) Is Nothing Then Exit Sub
'Target.Offset(0, 6) = Date
''Target.Offset(0, 2) = Time
'End Sub
 
Tüm kodları silip aşağıdakileri kullanın.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
 
    Dim c As Range, Adr As String
 
    If Intersect(Target, Range("A:A,G:G")) Is Nothing Then Exit Sub
    
    If Selection.Count > 1 Then Exit Sub
    
    With Target
        If .Column = 1 Then
            If .Row < 3 Then Exit Sub
            If .Value = "" Then Exit Sub
            Set c = Range("A2:A" & .Row - 1).Find(.Value, , xlValues, xlWhole)
            If Not c Is Nothing Then
                Adr = c.Address
                Do
                    If Cells(c.Row, "J") = "Devam" Then
                        MsgBox .Value & _
                        " - Numaranın daha önce kaydı var ve statüsü Devam."
                        .Value = ""
                        Exit Sub
                    End If
                Loop While Not c Is Nothing And c.Address <> Adr
            End If
        Else
            .Offset(0, 6) = Date
            .Offset(0, 2) = Time
        End If
    End With
 
End Sub

.
 
Kod a kolonunda değişiklik yapınca tarih saat atıyor uyarı vermiyor

olması gereken a kolonunda veri grilidğinde kontrolü yapması g kolonunda veri grilince tarih saat atması şeklinde..
 
Şuan denedim, bende sorunsuz çalıştı. Eski kodların tümünü sildiniz mi? Yada uyguladığınız dosya eklediğiniz dosyadan farklı mı?
 
Bende B kolonuna bişey yazdığınızda H kolonuna tarih atıyor G kolonuna bişey yazdığınızda doğru çalışıyor ..
sıkıntı B kolonuna dah önce olan bir kaydı yazdığımda uyarı vermiyor H kolonuna tarih atıyor

Private Sub Worksheet_Change(ByVal Target As Range)

Dim c As Range, Adr As String

If Intersect(Target, Range("B:B,G:G")) Is Nothing Then Exit Sub

If Selection.Count > 1 Then Exit Sub

With Target
If .Column = 1 Then
If .Row < 3 Then Exit Sub
If .Value = "" Then Exit Sub
Set c = Range("B2:B" & .Row - 1).Find(.Value, , xlValues, xlWhole)
If Not c Is Nothing Then
Adr = c.Address
Do
If Cells(c.Row, "K") = "Devam" Then
MsgBox .Value & _
" - IMEI numarasının daha önce kaydı var ve statüsü... *Devam* .. " & vbCrLf & vbCrLf & "Lütfen Girişinizi ve Önceki Kaydı Kontrol Ediniz...Girişiniz Silinmiştir...."
.Value = ""
Exit Sub
End If
Loop While Not c Is Nothing And c.Address <> Adr
End If
Else
.Offset(0, 6) = Date
' .Offset(0, 2) = Time
End If
End With

End Sub
 
Kodları uyarlarken tam olarak uyarlayamamışsınız.

If Intersect(Target, Range("B:B,G:G")) Is Nothing Then Exit Sub

Bu kısmı B sütunu yapmışsınız. O halde;

If .Column = 1 Then

Buradaki 1 değerini 2 yapmanız gerekir.

.
 
Çok teşekkür ederim yardımlarınız için teşekkürler..
 
Geri
Üst