koşullu hücre kilitleme

Katılım
9 Ocak 2016
Mesajlar
34
Excel Vers. ve Dili
Windows 10 -
Excel 2016 Türkçe
Herkese merhaba.

Uygun bir konu olduğu için sorunumu burada dile getirmek istedim. Hazırlamakta olduğum çalışma sayfasında D5 : D1004 aralığında tekrar eden bir veri doğrulama listesi bulunmaktadır. Bu aralıktaki her hücrede açılan listede "M²" ve "TOPLAM" (tırnaklar hariç) olmak üzere iki seçenek bulunmaktadır. Benim istediğim; eğer D5 hücresinde "M²" seçimini yaparsam J5 hücresi kilitlensin, "TOPLAM" seçimini yaparsam J5 hücresi açık olsun ve veri girişi yapılsın. Bu kural D5 : D1004 ve J5 : J1004 aralığında aynı şekilde devam etsin. Yalnız, sayfadaki diğer sütunlarda mevcut durumda kilitli ya da açık olan hücreler var. Herhangi bir koşula bağlı değiller ve sayfa varsayılan olarak korumalı durumda. Belki önemi vardır diye belirtmek istedim.

Koşula bağlı olmasını istediğim aralıklar yukarıdadır. Şimdiden teşekkür ederim.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
........
Benim istediğim; eğer D5 hücresinde "M²" seçimini yaparsam J5 hücresi kilitlensin,
"TOPLAM" seçimini yaparsam J5 hücresi açık olsun ve veri girişi yapılsın.
Bu kural D5 : D1004 ve J5 : J1004 aralığında aynı şekilde devam etsin.
.........
Merhaba.

-- Alt taraftan ilgili sayfa adına fareyle sağ tıklayıp KOD GÖRÜNTÜLEyi seçin,
-- Açılan VBA ekranında sağ taraftaki boş alana aşağıdaki kod'u yapıştırın,
-- D5:D1004 hücre aralığının KİLİTLİ özelliği varsa onu kaldırın.
.
Kod:
[FONT="Arial Narrow"][B]Private Sub Worksheet_Change(ByVal Target As Range)[/B]
If Intersect(Target, [D5:D1004]) Is Nothing Then Exit Sub
ActiveSheet.Unprotect
If Target = "M2" Then Cells(Target.Row, "J").Locked = True
If Target = "TOPLAM" Then Cells(Target.Row, "J").Locked = False
ActiveSheet.Protect
[B]End Sub[/B][/FONT]
 
Katılım
9 Ocak 2016
Mesajlar
34
Excel Vers. ve Dili
Windows 10 -
Excel 2016 Türkçe
Merhaba.

-- Alt taraftan ilgili sayfa adına fareyle sağ tıklayıp KOD GÖRÜNTÜLEyi seçin,
-- Açılan VBA ekranında sağ taraftaki boş alana aşağıdaki kod'u yapıştırın,
-- D5:D1004 hücre aralığının KİLİTLİ özelliği varsa onu kaldırın.
.
Kod:
[FONT="Arial Narrow"][B]Private Sub Worksheet_Change(ByVal Target As Range)[/B]
If Intersect(Target, [D5:D1004]) Is Nothing Then Exit Sub
ActiveSheet.Unprotect
If Target = "M2" Then Cells(Target.Row, "J").Locked = True
If Target = "TOPLAM" Then Cells(Target.Row, "J").Locked = False
ActiveSheet.Protect
[B]End Sub[/B][/FONT]
Tam olarak istediğim gibi. Başlangıçta çalışmadı, ancak "M2" => "M²" değişiminden sonra oldu. :) Çok teşekkür ederim.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Tam olarak istediğim gibi. Başlangıçta çalışmadı, ancak "M2" => "M²" değişiminden sonra oldu. :) Çok teşekkür ederim.
Tekrar merhaba.

Üstsimge değil de normal karakter olarak yazıldığını düşünmüştüm.

Önemli olan ihtiyacın görülmesi. Kolay gelsin.
 
Üst