Merhaba Herkese sağlıklı günler dilerim.
Excel dosyamda Userform üzerinden Ana Sayfa sekmesindeki tabloya veri kaydediyorum. Yapmak isteyip de çözemediğim şey Ana Sayfa sekmesine sayfa koruma koymak istiyorum fakat koyduğumda Userform üzerinden kayıt yaptırmıyor haliyle. Korumalı bir sayfaya userform üzerinden kayıt eklemenin ve bu korumalı sayfada istendiğinde verileri filtreletmenin bir yolu var mı? Teşekkürler.
Form açılırken sayfa korumasını kod ile kaldırın işlem bitince yeniden korumaya alın. Arşivimde benzer konuya ilişkin eski bir kod buldum, benzer bir yapı uygulayabilirsiniz.
Const PW As String = "password" '<-password yazan yere şifrenizi uygulayın
On Error GoTo exit_proc
With ActiveSheet
.Unprotect PW
.ShowDataForm
exit_proc:
.Protect PW
End With
End Sub
veya userinterface özeliğinden aşağıdakine benzer bir kod ile fayda sağlayabilirsiniz.
Private Sub Workbook_Open()
Dim wks As Worksheet
For Each wks In ActiveWorkbook.Worksheets
wks.Protect , UserInterfaceOnly:=True
Next wks
End Sub
ThisWorkbook.Worksheets("Ana Sayfa").Unprotect "sifre"
Kayıt ekleme kodunu ılk satırına yukardaki end sub tan önceki satırada alttaki kodu ekleyin.Tabii sifre yerine istediğiniz yazılacak.
ThisWorkbook.Worksheets("Ana Sayfa").Protect "sifre"
(22/02/2021, 23:09)feraz yazdı: ThisWorkbook.Worksheets("Ana Sayfa").Unprotect "sifre"
Kayıt ekleme kodunu ılk satırına yukardaki end sub tan önceki satırada alttaki kodu ekleyin.Tabii sifre yerine istediğiniz yazılacak.
ThisWorkbook.Worksheets("Ana Sayfa").Protect "sifre"
Feraz Bey çok teşekkür ederim. Gayet basitçe hallolmuş.Sağolun.
(22/02/2021, 21:32)atoykan yazdı: Form açılırken sayfa korumasını kod ile kaldırın işlem bitince yeniden korumaya alın. Arşivimde benzer konuya ilişkin eski bir kod buldum, benzer bir yapı uygulayabilirsiniz.
Const PW As String = "password" '<-password yazan yere şifrenizi uygulayın
On Error GoTo exit_proc
With ActiveSheet
.Unprotect PW
.ShowDataForm
exit_proc:
.Protect PW
End With
End Sub
veya userinterface özeliğinden aşağıdakine benzer bir kod ile fayda sağlayabilirsiniz.
Private Sub Workbook_Open()
Dim wks As Worksheet
For Each wks In ActiveWorkbook.Worksheets
wks.Protect , UserInterfaceOnly:=True
Next wks
End Sub
Dediğiniz gibi Feraz hocamın kodu işi çözdü. Sağolun.
Rica ederiz abey.Kayıt ekleme,sil vs.. için tek tek eklemektense bir modüldeki sub içine unprotect olanı başka bir sub içinede protect olanı eklerseniz kodu çağırırken basit olur.Tabii workbook.open içinede yazarsanız açılışta kilitlenir abey.Biraz karışık anlattım ama durum bu
Yani boş bir modüle alttaki gibi eklerseniz
Çağırken kilitac ve kilitle olarak çağırabilirsiniz kodların ilgili yerlerine
Belki mobilden hatalı yazmış olabilirim
Public Sub kilitle()
ThisWorkbook.Worksheets("Ana Sayfa").protect "sifre"
End sub
Public Sub kilitac()
ThisWorkbook.Worksheets("Ana Sayfa").Unprotect "sifre"
End sub