• DİKKAT

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

Eğer Şartına Göre Hücre Kilitleme(Makro Kullanmadan)

Katılım
19 Ocak 2009
Mesajlar
45
Excel Vers. ve Dili
2013-Türkçe
Merhaba,

Bir hücredeki değere göre diğer bir istediğim hücreyi kilitlemek istiyorum. Aradığım kadarıyla bulamadım ama yine de sormak istedim.

Formül çubuğunda EĞER şartını kullanarak hücre kilitlemek mümkün müdür?

Eğer mümkün değilse, ekte kullandığım Excel görüntüsünü de yolluyorum.

Tabloda Test Scope alanında seçtiğim değere göre Test Result alanındaki değeri değiştirmek istiyorum. Yani, Test Scope alanında "No" seçersem, Test Result alanında karşılık gelen hücrenin değerini N/A olarak değiştirip, hücreyi kilitlemek istiyorum.
Makro için yardımcı olabilir misiniz?

İyi günler
 

Ekli dosyalar

  • regression.jpg
    regression.jpg
    432.6 KB · Görüntüleme: 29
Son düzenleme:
Merhaba,
ilgili sayfanın kod bölümüne aşağıdaki kodu yapıştırıp deneyiniz.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)

sat = Range("b65536").End(xlUp).Row

If Intersect(Target, Range("b7:b" & sat)) Is Nothing Then Exit Sub
    If Target.Cells.Value = "No" Then
       Cells(Target.Row, "I") = "N/A"
       Me.Cells.Locked = False
       Cells(Target.Row, "I").Locked = True
       Me.Protect Password:=""
       Exit Sub
       Else
   
    Me.Unprotect Password:=""
    Cells(Target.Row, "I").Locked = False
    End If
 
End Sub
 
Merhaba,
ilgili sayfanın kod bölümüne aşağıdaki kodu yapıştırıp deneyiniz.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)

sat = Range("b65536").End(xlUp).Row

If Intersect(Target, Range("b7:b" & sat)) Is Nothing Then Exit Sub
    If Target.Cells.Value = "No" Then
       Cells(Target.Row, "I") = "N/A"
       Me.Cells.Locked = False
       Cells(Target.Row, "I").Locked = True
       Me.Protect Password:=""
       Exit Sub
       Else
   
    Me.Unprotect Password:=""
    Cells(Target.Row, "I").Locked = False
    End If
 
End Sub

Merhaba,

Çalıştır düğmesine bastığımda ekteki gibi bir ekran geliyor ve baştan Makro yaratmamı istiyor. Baştan yaratmayı deneyip tekrar run ettiğimde, yine aynı ekran açılıyor, sonuç olarak çalıştıramadım :)
 

Ekli dosyalar

  • run_error.jpg
    run_error.jpg
    415.1 KB · Görüntüleme: 7
Çalıştır komutu ile çalışmaz. "B" sütununda seçim yaptığınızda çalışır.
 
Çalıştır komutu ile çalışmaz. "B" sütununda seçim yaptığınızda çalışır.

Dediğiniz gibiymiş, bu şekilde yapınca çalıştı. Fakat bu durumda atladığım bir gereksinim var olduğunu anladım.

Eğer No seçili ise karşısındaki hücrenin değeri N/A yapılacak ve kilitlenecek, fakat Yes seçildiyse hücrenin değeri No Run yapılacak ve kilit varsa açılacak. Bu konuda yardımcı olabilir misiniz?

Şimdiden teşekkürler.
 
Şu şekilde deneyiniz.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
sat = Range("b65536").End(xlUp).Row
If Intersect(Target, Range("b7:b" & sat)) Is Nothing Then Exit Sub
    If Target.Cells.Value = "No" Then
        Me.Unprotect Password:=""
        Cells(Target.Row, "I") = "N/A"
        Cells(Target.Row, "I").Locked = True
        Me.Protect Password:=""
    ElseIf Target.Cells.Value = "Yes" Then
        Me.Unprotect Password:=""
        Cells(Target.Row, "I").Locked = False
        Cells(Target.Row, "I") = "No Run"
        Me.Protect Password:=""
    End If
End Sub
 
Şu şekilde deneyiniz.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
sat = Range("b65536").End(xlUp).Row
If Intersect(Target, Range("b7:b" & sat)) Is Nothing Then Exit Sub
    If Target.Cells.Value = "No" Then
        Me.Unprotect Password:=""
        Cells(Target.Row, "I") = "N/A"
        Cells(Target.Row, "I").Locked = True
        Me.Protect Password:=""
    ElseIf Target.Cells.Value = "Yes" Then
        Me.Unprotect Password:=""
        Cells(Target.Row, "I").Locked = False
        Cells(Target.Row, "I") = "No Run"
        Me.Protect Password:=""
    End If
End Sub

Merhaba,

Bu kod çalışıyor fakat şöyle bir durum var. Yes seçtiğimde No/Run'a çekiyor, No/Run olan kısımda da bir liste var, bir işlemi bitirdikten sonra ben onu "Passed" durumuna çekiyorum. Onu çektiğim zaman kodun işlevi de bozuluyor. "Yes","No" işlevini kaybediyor.

Ekte belgeyi yolluyorum, inceleyebilir misiniz?
 

Ekli dosyalar

Merhaba,
öncelikle "3-Kiralık Devreler" sayfasından söz ediyoruz sanırım. İkinci olarak, "B" sütununda "Yes" seçili iken "I" sütununda diğer seçenekleri değiştirebiliyorsunuz. "No" seçili iken "I" sütunu kilitli olduğu için işlem yapamıyorsunuz. Bunun dışında yapmak istediğimiz tam olarak nedir? anlayamadım.
 
Merhaba,
öncelikle "3-Kiralık Devreler" sayfasından söz ediyoruz sanırım. İkinci olarak, "B" sütununda "Yes" seçili iken "I" sütununda diğer seçenekleri değiştirebiliyorsunuz. "No" seçili iken "I" sütunu kilitli olduğu için işlem yapamıyorsunuz. Bunun dışında yapmak istediğimiz tam olarak nedir? anlayamadım.

Sayfa olarak başında sayı olan tüm sayfalarda bu fonksiyonu kullanacağım. Formatları aynı olduğu için muhtemelen hepsinde çalışacaktır.

Eğer "Yes" seçili ise, I sütununda karşılık gelen hücre No Run yapılacak, hücre kilitli olmayacak.

Eğer "No" seçili ise, I sütununda karşılık gelen hücre N/A yapılacak ve hücre kilitlenecek.

Buraya kadar en başta herşey normal çalışıyor aslında.

Fakat Yes ile seçilip, No Run'a çekilen değerler sonradan manuel olarak değişebiliyor. Yani I sütunundaki değer No Run'dan Passed, Failed, Blocked, No Run veya N/A değerlerini tekrardan alabilir. Bu durumda B sütunundan Yes No seçimini bir daha yapmaya çalıştığımda değişiklik yapmıyor.

Açıkça istediğim. I sütunundaki değer ve kilit durumundan bağımsız olarak, B sütununda Yes seçilince I sütunundaki karşılığı No Run olsun, No seçildiğinde N/A olsun ve hücre kitlensin. Yes durumunda manuel olarak N/A seçilebilir, o durumda hücre kilitlenmesi veya herhangi bir kontrolün yapılması gerekli değil.

Umarım açıkça anlatabilmişimdir.
 
Fakat Yes ile seçilip, No Run'a çekilen değerler sonradan manuel olarak değişebiliyor. Yani I sütunundaki değer No Run'dan Passed, Failed, Blocked, No Run veya N/A değerlerini tekrardan alabilir. Bu durumda B sütunundan Yes No seçimini bir daha yapmaya çalıştığımda değişiklik yapmıyor.

Açıkça istediğim. I sütunundaki değer ve kilit durumundan bağımsız olarak, B sütununda Yes seçilince I sütunundaki karşılığı No Run olsun, No seçildiğinde N/A olsun ve hücre kitlensin. Yes durumunda manuel olarak N/A seçilebilir, o durumda hücre kilitlenmesi veya herhangi bir kontrolün yapılması gerekli değil.

Umarım açıkça anlatabilmişimdir.

Bendeki denemelerde bu dedikleriniz aynen gerçekleşiyor.
 
Merhabalar.

Anladığım kadarıyla; sayfayı kilitleme işlemi doğru işlem değil,
sizin istediğiniz sayfaya değil belli hücrelere girişe ilişkin sınırlandırma işlemi.

Sanırım aşağıdaki şekilde işlem yapınca istediğiniz sonuca ulaşabilirsiniz.

-- Birinci adım:
Sayın ŞAHİN'in gönderdiği kod'u aşağıdaki şekilde değiştirin.
Kod:
[FONT="Arial Narrow"]Private Sub Worksheet_Change(ByVal Target As Range)
sat = Range("b65536").End(xlUp).Row
If Intersect(Target, Range("b7:b" & sat)) Is Nothing Then Exit Sub
    If Target.Cells.Value = "No" Then
       Cells(Target.Row, "I") = "N/A"
    End If
End Sub[/FONT]

-- İkinci adım:
-- I sütununda gerekli hücreler seçiliyken veri doğrulama menüsünden LİSTE seçeneğini seçin ve aşağıdaki formülü uygulayarak işlemi onaylayın.
Kod:
=EĞER($B7="No";Configurations!$B$9;Configurations!$B$5:$B$9)
 
Merhabalar.

Anladığım kadarıyla; sayfayı kilitleme işlemi doğru işlem değil,
sizin istediğiniz sayfaya değil belli hücrelere girişe ilişkin sınırlandırma işlemi.

Sanırım aşağıdaki şekilde işlem yapınca istediğiniz sonuca ulaşabilirsiniz.

-- Birinci adım:
Sayın ŞAHİN'in gönderdiği kod'u aşağıdaki şekilde değiştirin.
Kod:
[FONT="Arial Narrow"]Private Sub Worksheet_Change(ByVal Target As Range)
sat = Range("b65536").End(xlUp).Row
If Intersect(Target, Range("b7:b" & sat)) Is Nothing Then Exit Sub
    If Target.Cells.Value = "No" Then
       Cells(Target.Row, "I") = "N/A"
    End If
End Sub[/FONT]

-- İkinci adım:
-- I sütununda gerekli hücreler seçiliyken veri doğrulama menüsünden LİSTE seçeneğini seçin ve aşağıdaki formülü uygulayarak işlemi onaylayın.
Kod:
=EĞER($B7="No";Configurations!$B$9;Configurations!$B$5:$B$9)

Ömer Bey Merhaba,

Öncelikle cevap için teşekkürler. Dediğiniz gibi sayfa kilitleme işlemi doğru değildi. Fakat hücreleri kilitleme konusunda sıkıntı olmadı.

Sizin sağladığınız kodda da şöyle bir durum var. "Yes" seçildiğinde No Run'a çekilmesi gerekiyordu. Ben kodda Elseif ile yapabildiğimi düşünüyorum. Fakat şu an "Hesaplanmış Sütun Formülü Tutarsız" şeklinde hata alıyorum. Ekteki belgede 7- TURPAK sayfasında hatayı görebilirsiniz. I hücresi için bunlar öncesinde bir formül yazmıştım, sanırım o formül etkiliyor fakat o formülü temizleyemiyorum şu anda. Yardımcı olabilir misiniz?
 

Ekli dosyalar

Tekrar merhaba.

Kod'a aşağıdaki mavi renklendirdiğim satırları ekleyin ve
I sütunundaki mevcut verileri KOPYALA -> ÖZEL YAPIŞTIR -> DEĞERLERİ
şeklinde işlem yaparak DEĞERe dönüştürün.

Not: 7 numaralı cevabınız ekindeki belgede 7- TURPAK adını taşıyan bir sayfa göremedim.
Sorun yaşadığınız örnek belgeyi isterseniz yenileyin.
Kod:
    If Target.Cells.Value = "No" Then
       Cells(Target.Row, "I") = "N/A"
[COLOR="Blue"]    ElseIf Target.Cells.Value = "Yes" Then
       Cells(Target.Row, "I") = "No Run"[/COLOR]
    End If
 
Tekrar merhaba.

Kod'a aşağıdaki mavi renklendirdiğim satırları ekleyin ve
I sütunundaki mevcut verileri KOPYALA -> ÖZEL YAPIŞTIR -> DEĞERLERİ
şeklinde işlem yaparak DEĞERe dönüştürün.

Not: 7 numaralı cevabınız ekindeki belgede 7- TURPAK adını taşıyan bir sayfa göremedim.
Sorun yaşadığınız örnek belgeyi isterseniz yenileyin.
Kod:
    If Target.Cells.Value = "No" Then
       Cells(Target.Row, "I") = "N/A"
[COLOR="Blue"]    ElseIf Target.Cells.Value = "Yes" Then
       Cells(Target.Row, "I") = "No Run"[/COLOR]
    End If

Merhaba tekrardan,

Verileri değere dönüştürünce sorun çözüldü.

Teşekkürler
 
Tekrar merhaba.

Kod'a aşağıdaki mavi renklendirdiğim satırları ekleyin ve
I sütunundaki mevcut verileri KOPYALA -> ÖZEL YAPIŞTIR -> DEĞERLERİ
şeklinde işlem yaparak DEĞERe dönüştürün.

Not: 7 numaralı cevabınız ekindeki belgede 7- TURPAK adını taşıyan bir sayfa göremedim.
Sorun yaşadığınız örnek belgeyi isterseniz yenileyin.
Kod:
    If Target.Cells.Value = "No" Then
       Cells(Target.Row, "I") = "N/A"
[COLOR="Blue"]    ElseIf Target.Cells.Value = "Yes" Then
       Cells(Target.Row, "I") = "No Run"[/COLOR]
    End If

Ömer Bey Merhaba,

L1 hücresindeki değerdeki formül hakkında takıldım.

Test Scope alanındaki tüm değerler No ise, L1 hücresindeki değerin N/A olması gerekiyor.

Fakat Test Scope alanında 1 tane Yes seçili olsa dahi, L1 hücresindeki değerin ne olacağı Test Result alanındaki şartlara göre belirlenecek. O da şöyle oluyor.

=EĞER(YADA(EĞERSAY(Tablo79111213[Test Result];"Failed")>0;EĞERSAY(Tablo79111213[Test Result];"Blocked")>0;EĞERSAY(Tablo79111213[Test Result];"No Run")>0);Configurations!D6;Configurations!D5)

Test Result alanındaki değerlerden herhangi biri Failed, Blocked ya da No Run ise L1 hücresindeki değer "Not Completed" olacak, eğer bunların haricinde "Success" ve "N/A" değerlerinden oluşuyorsa "Completed" olacak.

Tabi yukarıdaki paragrafta ön şart ondan önce yazdığım paragraftaki gibi, eğer Test Scope alanındaki tüm değerler "No" ise, Test Result alanındaki tüm değerler N/A oluyor, bu durumda L1 alanı da "N/A" olacak.

IF(Test Scope'un Hepsi "No" ise)
L1="N/A"
ELSEIF(YADA(EĞERSAY(Tablo79111213[Test Result];"Failed")>0;EĞERSAY(Tablo79111213[Test Result];"Blocked")>0;EĞERSAY(Tablo79111213[Test Result];"No Run")>0)
L1="Not Completed"
ELSE
L1="Completed"
 

Ekli dosyalar

Son düzenleme:
Tekrar merhaba.

Konu çözüldü mesajını yazdığınız için konunun tamamlandığını düşünmüştüm.
O nedenle son mesajınızdaki soruyu fark etmedim.

L1 hücresindeki formülü aşağıdaki ile değiştirerek istediğiniz sonuca ulaşılması gerekir.
Mavi kısım B sütununa ilişkin ön koşul, gerisi ise zaten kullanmakta olduğunuz formül.
Kod:
=[B][COLOR="Blue"]EĞER(EĞERSAY(Tablo79111213[Test Scope];"<>No")=0;"N/A";[/COLOR][/B]EĞER(YADA(EĞERSAY(Tablo79111213[Test Result];"Failed")>0;EĞERSAY(Tablo79111213[Test Result];"Blocked")>0;EĞERSAY(Tablo79111213[Test Result];"No Run")>0);Configurations!D6;Configurations!D5))
 
Şu şekilde deneyiniz.
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
sat = Range("b65536").End(xlUp).Row
If Intersect(Target, Range("b7:b" & sat)) Is Nothing Then Exit Sub
    If Target.Cells.Value = "No" Then
        Me.Unprotect Password:=""
        Cells(Target.Row, "I") = "N/A"
        Cells(Target.Row, "I").Locked = True
        Me.Protect Password:=""
    ElseIf Target.Cells.Value = "Yes" Then
        Me.Unprotect Password:=""
        Cells(Target.Row, "I").Locked = False
        Cells(Target.Row, "I") = "No Run"
        Me.Protect Password:=""
    End If
End Sub


Merhaba, ekteki kodu kendime uyarlamaya çalıştım fakat çalıştıramadım. benim yapmaya çalıştığım şey, F5 hücresine herhangi bir değer girdiğimde, B10:N15 birleştirilmiş hücre aralığını kilitlesin ve "DÖF uygunsuzluğa bağlandı" mesajını yazsın.

Yardımcı olabilir misiniz.
 
Geri
Üst