Soru macro ile tüm sayfayı korumaya alma

incsoft

Altın Üye
Katılım
18 Ağustos 2009
Mesajlar
737
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2024
Aylık olarak takipde kullandığım dosyamda 1-31 sayfa bulunmaktadır. Benim amacım örneğin 13 numaralı sayfa ile iş bitip 14 nolu sayfaya geçtiğimde o sayfayı tüm değişikliklere karşı koruma altına almaktır. Şuan da sayfalarda belirlediğim hücreler kilitli sayfada koruma olduğundan sadece o alanlarda değişiklik yapılamıyor. Ekteki dosyamda sadece sarı ile boyalı kısımlar kilitli ve şifresi 123 arkadaşlar.. Butona tıkladığımda tüm hücreleri 123 ile koruma altına aldırmak için
nasıl bir macro kullanabilirim? İstenildiği zaman da tüm sayfaların kilitlerini kaldırıp ya da kilitleme gibi bir yöntem uygulanabilirmi? 31 gün varsa 1 butonla tüm 31 günü koruma altına alacam ve değişiklik yapılamayacak..

Teşekkürler..
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,250
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Aşağıdaki kodla bu işlemi yapabilirsiniz.

C++:
Sub Koruma_Aktif()
    With Sheets("Sayfa1")
        .Unprotect "123"
        .Cells.Locked = True
        .Protect "123"
    End With
End Sub
 

incsoft

Altın Üye
Katılım
18 Ağustos 2009
Mesajlar
737
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2024
Aşağıdaki kodla bu işlemi yapabilirsiniz.

C++:
Sub Koruma_Aktif()
    With Sheets("Sayfa1")
        .Unprotect "123"
        .Cells.Locked = True
        .Protect "123"
    End With
End Sub

Öncelikle teşekkürler hocam. Sayfa1 standart değil buton sayfa adını otomatik olarak tespit edip sayfadaki kiliti açtıktan sonra tüm hücreleri kilitleyip sonrasında yeniden şifreleyecek. Birde mesela çalıştığımız sayfa 22 nolu sayfa.. Bu sayfa öncesindeki tüm günleri şifre dediğimizde de 1-21 arasını şifreleyecek hocam..
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,250
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Sheets("Sayfa1") yerine ActiveSheet yazıp deneyiniz.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,250
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Eğer 1-31 arasında bütün sayfalarınız dosyanızda varsa aşağıdaki kod sorunsuz çalışır.

C++:
Option Explicit

Sub Koruma_Aktif()
    Dim X As Integer
    For X = 1 To Val(ActiveSheet.Name) - 1
        With Sheets(CStr(X))
            .Unprotect "123"
            .Cells.Locked = True
            .Protect "123"
        End With
    Next
End Sub
 
Üst