• DİKKAT

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

belirtilen hücreleri kilitlemek

  • Konbuyu başlatan Konbuyu başlatan k0081
  • Başlangıç tarihi Başlangıç tarihi
Katılım
17 Haziran 2008
Mesajlar
1,874
Excel Vers. ve Dili
Microsoft Ofis Profesyonel 2019 x64 TR
Merhaba arkadaşlar;

Belirtilen hücreleri, basit bir şekilde nasıl kilitleyebiliriz ?
 
aşağıda açıkladığım yönteme bir bakın, ben bunu bir modül içerisine gömüm, aç/kapa şeklinde bir değişken ile gidiyorum...

eğer AÇ dersem, font rengi 56 olanları açıp, geri kalanı kilitliyorum

KAPA kısmında ise sadece cells.lock ile tamamını kilitliyorum

işlemler sonunda worksheet.protect ile korumayı unutmayın, yoksa kilitlemek bir işe yaramıyor biliyorsunuz

bir de ben bunu tüm kitap için yapıyorum, tek bir sayfa için yapacaksanız for sayfa....next sayfa kısımlarına ihtiyacınız olmayacak....

son olarak da, tablolara göre farklı aralıklar için bu işlemi yapıyorum. sayfalarım çok dinamik değil, o nedenle sağ alt köşe hücresini ben verdim, eğer sizde farklı bir durum yok ise rangein belirlenmesini statik yapabilir, farklı bir durum olabilir diyorsanız dinamik olarak son hücreyi sizin bulmanız daha sağlıklı olacaktır.
 
Son düzenleme:
cells(1,1).locked= true komutu ile a1 hücresini kilitleyebilirsiniz.

veya, tüm sayfayı kilitleyip, istediğiniz hücreleri .locked=false ile açabilirsiniz.

belli bir özelliği var ise bu hücrelerin, örneğin yazı rengi kırmızı ise açık kalsın gibi, o zaman da hücre referansı vermeden cells.locked = true ile tamamını kilitleyip, daha sonra tüm hücreler için bir döngü oluşturup, kriterinize uyan hücrelerin kilidini açabilirsiniz...

aşağıda bu konuda bir çalışma için yakın zamanda yazdığım bir kod var, kodu bir inceleyin, işinizi görecektir diye düşünüyorum. takıldığınız yer olursa sorun lütfen

Kod:
For SAYFA = 1 To Sheets.Count

Sheets(SAYFA).Activate

Cells.FormulaHidden = True
Cells.Locked = True

If Sheets(SAYFA).Name = "TAblolar" Then
SAT = 300
SUT = 14
Else
SAT = 120
SUT = 23
End If



For Each HUCRE In Worksheets(SAYFA).Range(Cells(1, 1), Cells(SAT, SUT)).Cells


If HUCRE.MergeCells = True Then

Set BIRLESMIS_HUCRE = HUCRE.MergeArea


If BIRLESMIS_HUCRE.Font.ColorIndex = 56 Then
           BIRLESMIS_HUCRE.Locked = False
           BIRLESMIS_HUCRE.FormulaHidden = True

End If

Else
           If HUCRE.Font.ColorIndex = 56 Then
           HUCRE.Locked = False
           HUCRE.FormulaHidden = True
        End If
       
End If

Next HUCRE


Next SAYFA
 
doganbaris;700396]

hocam bilgiler için çok teşekkür,,

Şöyle açıklayayım;

Sayfa1 deki = Yazı tipi : Tahoma, Yazı rengi : mavi, Yazı Yüksekliği : 9 özelliklerine sahip hücreleri kilitlemek istiyorum hocam..
 
diğer hücreler de tahoma ve 9 punto değil mi ?

mavi tek ayrıntı olabilir diye düşünüyorum ?
 
Mavinin renk kodunu bularak, 56 olan yeri, sizin mavi kodunuz ile değiştirebilirsiniz.

http://dmcritchie.mvps.org/excel/colors.htm

bu sitede standart renk kodları var, 2007 ve sonrasında gelen renk kodlarını kullanıyorsanız en basit anlamda bir hücrenin rengini değiştirecek şekilde basit bir makro kaydedip, makro detayından renk koduna ulaşabilirsiniz. Ya da, yukarıda linkte verdiğim siteden Red Green Blue kodlarını font rengindeki "more colors / custom " seçeneği altından girebilirsiniz.

Örneğin 56 renk kodu için RGB kodu 33,33,33
Ya da siz font renginizi salt mavi yapacaksanız RGB kodunu 0,0,255 olarak girip, 56 olan kısmı 5 olarak değiştirebilirsiniz.

bir bakın, takılırsanız devam edelim...
 
sonuç alamadım demek yerine daha net birşey yazsanız ?

yapacağınız tek şey 56'yı 5 ile değiştirmek. Ancak bu mavi yukarıda da belirttiğim gibi 0,0,255 renk kodlu mavi için geçerli , kullanacağınız rengin bir ton bile değişik olması sonucu etkiler , diğer bir deyişle kod çalışmaz, tüm hücreleriniz kilitli kalır...

bir de bu kodu ne ile çalıştırıyorsunuz ? ......button_click() e mi koydunuz ? ya da nereye ?

düzeltilmiş hali aşağıda...

Kod:
For SAYFA = 1 To Sheets.Count

Sheets(SAYFA).Activate

Cells.FormulaHidden = True
Cells.Locked = True

If Sheets(SAYFA).Name = "Tablolar" Then
SAT = 300
SUT = 14
Else
SAT = 120
SUT = 23
End If



For Each HUCRE In Worksheets(SAYFA).Range(Cells(1, 1), Cells(SAT, SUT)).Cells


If HUCRE.MergeCells = True Then

Set BIRLESMIS_HUCRE = HUCRE.MergeArea


If BIRLESMIS_HUCRE.Font.ColorIndex = 5 Then
           BIRLESMIS_HUCRE.Locked = False
           BIRLESMIS_HUCRE.FormulaHidden = True

End If

Else
           If HUCRE.Font.ColorIndex = 5 Then
           HUCRE.Locked = False
           HUCRE.FormulaHidden = True
        End If
       
End If

Next HUCRE


Next SAYFA
 
hocam; ben 56, 5 olarak değiştirdim. evet Buton clik ile çalıştırıyorum..

Şimdi; Sayfadaki kilitlemeyi neye göre yapıyor,,? yani bir şifre felan gerekmiyor mu ?

ayrıca şu hatayı alıyorum
2013-05-02_145802.jpg

benim tablomda mavi renkte olan hücreler mevcut. ve tablom şifresiz.. tekrar bi bakacağım..
 
Excelini (sıkıştırmadan) ekleyebilir misin ? daha kolay destek olabilirim...

şifre isteğinize bağlı, hücrelerin kilit özelliğini burada aktif/pasifleştiriyorsunuz. yani hücre özelliklerinde gördüğünüz kutucuk işaretleniyor/kalkıyor diye düşünün

kilitli hücrelere işlem yapılmaması ise sayfa koruması sağlandıktan sonra yapılıyor. burada her bir sayfayı seçip, belirli range içerisinde kalan kısımdaki hücrelerin özelliğini ayarladıktan sonra next sayfa ile bir sonraki sayfaya geçiyoruz. bu satırdan önce
Worksheets(SAYFA).Protect ile sayfayı koruyabilirsiniz. koruma adımından sonra kilitli hücrelere işlem yapılmayacak, açık bıraktıklarınıza yapılacak
açmak için ise Unprotect kullanıyorsunuz.
şifre ile korumak isterseniz
Kod:
Worksheets(SAYFA).Protect "k0081"
şeklinde, protectten sonra, tırnaklar arasına şifre girerek vermelisiniz.
 
Doğan hocam; sanırım ben hatanın nereden kaynaklandığını buldum. sizin göndermiş olduğunuz kod diğer sayfalarıda şifreliyor.. bunu sadece 1 sayfa için düzenleyebilirsek, sorun çözülüyor hocam.. ( ayrıcada bu kodda dursun o hepsine şifre koyuyor belirtilen şarta göre..) modül ile çalıştıracağım hocam ben bu kodu... teşekkürler..
 
sayfa isminin Sayfa1 olduğundan yola çıkarak....


Kod:
Sheets("Sayfa1").Activate      ' Sayfa1 isimli sayfa aktif edildi...
Cells.FormulaHidden = True     ' tüm hücrelerin Gizli seçeneği seçildi
Cells.Locked = True            ' tüm hücreler kilitli seçeneği seçildi
SAT = 120                      'sayfada bilgi olan en son satır
SUT = 23                       ' sayfada bilgi olan en son sütun

' A1 hücresinden ( 1,1) , yukarıda verdiğiniz satır/sütuna denk gelen , ( örnek kodda w120 hücresine kadar ) tüm aralıktaki hücreler için....
' Eğer aralık değişebilir / dinamik ise , 
' SUT = ActiveCell.SpecialCells(xlLastCell).Column
' SAT = ActiveCell.SpecialCells(xlLastCell).Row
' şeklinde belirtebilirsin. böylece sayfadaki son satır ve son sütun alınır
' ancak sayfa çok büyüktür ve sen sadece küçük bir aralıkta bunu yapmak istiyorsan
' işlem süresini kısaltmak adına 1.yolu tercih edebilirsin.
' benim bu 120 x 23 lük kilitleme işlemini yaptığım sayfada 1200 satır, 300 kolon vardı
' ama sadece işime yarayan daha doğrusu veri girişi yapılacak yerde bunu yaptım
' diğer kısımlar formüllü olduğundan tekrar kontrole gerek yoktu...
' 2. ve 3. satır tüm sayfayı kilitliyor zaten...
' devam edelim... ne demiştik, aralıktaki tüm hücreler için...

For Each HUCRE In Worksheets("Sayfa1").Range(Cells(1, 1), Cells(SAT, SUT)).Cells


'Sadece renk bakacaksan mergearea'ya gerek olmayabiliyor, ama ben daha sağlıklı çalışması açısından bunu kullanıyorum. Bazen hata alıyorum çünkü
'çok da detaylı incelemeyerek, iki satır fazla kod yazmak daha uygun oldu
' renk koduna değil de, değerine falan bakmak istediğinde de bu ayrım zorunlu oluyor sanırım.

' birleştirdiğin hücre yok ise bu aralıkta, Bu satır ile 
If HUCRE.MergeCells = True Then
Set BIRLESMIS_HUCRE = HUCRE.MergeArea
  If BIRLESMIS_HUCRE.Font.ColorIndex = 5 Then
    BIRLESMIS_HUCRE.Locked = False
    BIRLESMIS_HUCRE.FormulaHidden = True
End If
Else

' Bu satır arasını silebilirsin, tabii bunu silersen en sondaki END IF i de silmen gerekecek...

  If HUCRE.Font.ColorIndex = 5 Then
     HUCRE.Locked = False
     HUCRE.FormulaHidden = True
  End If
       
End If

Next HUCRE
 
rica ederim , ilave birşey olursa yazarsın , çok sıkı takip edemiyorum forumu,ses çıkmazsa ÖM gönderirsin.
ben de bir ara autocad hakkında seni rahatsız edebilirim :)
 
rica ederim , ilave birşey olursa yazarsın , çok sıkı takip edemiyorum forumu,ses çıkmazsa ÖM gönderirsin.
ben de bir ara autocad hakkında seni rahatsız edebilirim :)

Autocad ilgili,, ne demek hocam,, her zaman..
 
Geri
Üst