Kullanıcıya Göre Sayfaların Gizlenmesi

Tefo

Altın Üye
Katılım
22 Temmuz 2021
Mesajlar
33
Excel Vers. ve Dili
Office 2019 EN 32 Bit
Altın Üyelik Bitiş Tarihi
30-12-2027
Merhabalar,
6 sayfalı bir excel dosyam var. Dosyanın 5 sayfası veri içeriyor kalan sayfa ise bütün sayfalardaki verileri toplu olarak içeriyor. Bu dosya içerisine giriş için 6 adet kullanıcı adı ve şifre oluşturmak istiyorum ve ilgili kullanıcı sadece kendisine tanımlanmış sayfadaki verileri görüp düzenleme yapabilsin. Forumda araştırdım böyle bir başlık bulamadım yardımcı olabilir misiniz? Daha sonrasında log tutmak | Sayfa 4 | Excel WEB TR Forum - Excel, Excel Makro, Excel Fonksiyon, Excel Formül, Excel soru ve çözümleri adresindeki gibi kodlar ile birleştirip kimin ne zaman giriş ve değişiklik yaptığını görmek istiyorum.
Değerli destekleriniz için şimdiden teşekkür ederim.
 

DoğanD

Altın Üye
Katılım
22 Eylül 2023
Mesajlar
379
Excel Vers. ve Dili
Office 365 TR
Altın Üyelik Bitiş Tarihi
05-10-2028
Merhaba,

Buna benzer bir çalışmam vardı, talebinize uyarladım ve ekte iletiyorum.

Kullanıcı giriş ekranı, dosya ilk açıldığında makrolar aktifse gelir ve makrolar aktif değilse boş bir sayfa görünür. Kullanıcı giriş ekranında tanımlı kullanıcıları kullanarak giriş yapabilirsiniz. AnaSayfa yetkisi 1 değilse görünmez. Admin yetkisi 1 olduğunda, admin kullanıcı adı ve parolayı girdikten sonra UserForm'da boş bir alana çift tıklayarak tüm sayfalara erişebilirsiniz. Kullanıcılar yanlarında yazılı sayfalar dışında hiçbir sayfaya erişemez. Sorunuz olursa yardımcı olmaya çalışırım.

251153
251151
 

Ekli dosyalar

Son düzenleme:

yanginci34

Altın Üye
Katılım
6 Temmuz 2010
Mesajlar
1,590
Excel Vers. ve Dili
excel2016
Altın Üyelik Bitiş Tarihi
12-10-2026
Merhaba,

Buna benzer bir çalışmam vardı, talebinize uyarladım ve ekte iletiyorum.

Kullanıcı giriş ekranı, dosya ilk açıldığında makrolar aktifse gelir ve makrolar aktif değilse boş bir sayfa görünür. Kullanıcı giriş ekranında tanımlı kullanıcıları kullanarak giriş yapabilirsiniz. AnaSayfa yetkisi 1 değilse görünmez. Admin yetkisi 1 olduğunda, admin kullanıcı adı ve parolayı girdikten sonra UserForm'da boş bir alana çift tıklayarak tüm sayfalara erişebilirsiniz. Kullanıcılar yanlarında yazılı sayfalar dışında hiçbir sayfaya erişemez. Sorunuz olursa yardımcı olmaya çalışırım.

Ekli dosyayı görüntüle 251153
Ekli dosyayı görüntüle 251151
Elinize sağlık güzel bir paylaşım fakat eğer müsaitseniz bir sorum olacaktı bir kullanıcı birden fazla sayfayı yetki verilmesi gerekirse nasıl yetkilendiririz.
 

DoğanD

Altın Üye
Katılım
22 Eylül 2023
Mesajlar
379
Excel Vers. ve Dili
Office 365 TR
Altın Üyelik Bitiş Tarihi
05-10-2028
Merhaba,

Kullanıcı bilgilerinin bulunduğu tabloyu aşağıdaki şekilde doldurup Giriş Butonu kodlarını aşağıdaki şekilde değiştirerek deneyebilirsiniz.
Kod:
Private Sub CommandButton1_Click()
Dim i, j As Integer
If UserForm1.TextBox1.Text = "Kullanıcı Adı" Or UserForm1.TextBox1.Text = "Parola" Then Exit Sub
If WorksheetFunction.CountIf(Sayfa7.Range("A:A"), UserForm1.TextBox1.Text) = 0 Then
MsgBox "Böyle bir kullanıcı yok, Kontrol edip tekrar deneyin", vbCritical, ""
Exit Sub
Else
If WorksheetFunction.VLookup(UserForm1.TextBox1.Text, Sayfa7.Range("A:B"), 2, 0) <> UserForm1.TextBox2.Text Then
MsgBox UserForm1.TextBox1.Text & " Kullanıcısı için girilen parola doğru değil. Kontrol edip tekrar deneyin", vbCritical, ""
Exit Sub
    Else
    For j = 1 To ThisWorkbook.Sheets.Count
    Sheets(j).Visible = True
    Next j
    
    For i = 1 To ThisWorkbook.Sheets.Count
   ' If Sheets(i).Name = WorksheetFunction.VLookup(UserForm1.TextBox1.Text, Sayfa7.Range("A:C"), 3, 0) Then GoTo atla
    If WorksheetFunction.CountIfs(Sayfa7.Range("A:A"), UserForm1.TextBox1.Text, Sayfa7.Range("C:C"), Sheets(i).Name) > 0 Then GoTo atla
    If WorksheetFunction.VLookup(UserForm1.TextBox1.Text, Sayfa7.Range("A:d"), 4, 0) = 1 And Sheets(i).Name = "AnaSayfa" Then GoTo atla
    Sheets(i).Visible = xlVeryHidden
atla:
    Next i
    End If
End If
Unload Me

End Sub

251155
 

yanginci34

Altın Üye
Katılım
6 Temmuz 2010
Mesajlar
1,590
Excel Vers. ve Dili
excel2016
Altın Üyelik Bitiş Tarihi
12-10-2026
Merhaba,

Kullanıcı bilgilerinin bulunduğu tabloyu aşağıdaki şekilde doldurup Giriş Butonu kodlarını aşağıdaki şekilde değiştirerek deneyebilirsiniz.
Kod:
Private Sub CommandButton1_Click()
Dim i, j As Integer
If UserForm1.TextBox1.Text = "Kullanıcı Adı" Or UserForm1.TextBox1.Text = "Parola" Then Exit Sub
If WorksheetFunction.CountIf(Sayfa7.Range("A:A"), UserForm1.TextBox1.Text) = 0 Then
MsgBox "Böyle bir kullanıcı yok, Kontrol edip tekrar deneyin", vbCritical, ""
Exit Sub
Else
If WorksheetFunction.VLookup(UserForm1.TextBox1.Text, Sayfa7.Range("A:B"), 2, 0) <> UserForm1.TextBox2.Text Then
MsgBox UserForm1.TextBox1.Text & " Kullanıcısı için girilen parola doğru değil. Kontrol edip tekrar deneyin", vbCritical, ""
Exit Sub
    Else
    For j = 1 To ThisWorkbook.Sheets.Count
    Sheets(j).Visible = True
    Next j
   
    For i = 1 To ThisWorkbook.Sheets.Count
   ' If Sheets(i).Name = WorksheetFunction.VLookup(UserForm1.TextBox1.Text, Sayfa7.Range("A:C"), 3, 0) Then GoTo atla
    If WorksheetFunction.CountIfs(Sayfa7.Range("A:A"), UserForm1.TextBox1.Text, Sayfa7.Range("C:C"), Sheets(i).Name) > 0 Then GoTo atla
    If WorksheetFunction.VLookup(UserForm1.TextBox1.Text, Sayfa7.Range("A:d"), 4, 0) = 1 And Sheets(i).Name = "AnaSayfa" Then GoTo atla
    Sheets(i).Visible = xlVeryHidden
atla:
    Next i
    End If
End If
Unload Me

End Sub

Ekli dosyayı görüntüle 251155
teşekkür ederim
 

Tefo

Altın Üye
Katılım
22 Temmuz 2021
Mesajlar
33
Excel Vers. ve Dili
Office 2019 EN 32 Bit
Altın Üyelik Bitiş Tarihi
30-12-2027
Merhaba,

Kullanıcı bilgilerinin bulunduğu tabloyu aşağıdaki şekilde doldurup Giriş Butonu kodlarını aşağıdaki şekilde değiştirerek deneyebilirsiniz.
Kod:
Private Sub CommandButton1_Click()
Dim i, j As Integer
If UserForm1.TextBox1.Text = "Kullanıcı Adı" Or UserForm1.TextBox1.Text = "Parola" Then Exit Sub
If WorksheetFunction.CountIf(Sayfa7.Range("A:A"), UserForm1.TextBox1.Text) = 0 Then
MsgBox "Böyle bir kullanıcı yok, Kontrol edip tekrar deneyin", vbCritical, ""
Exit Sub
Else
If WorksheetFunction.VLookup(UserForm1.TextBox1.Text, Sayfa7.Range("A:B"), 2, 0) <> UserForm1.TextBox2.Text Then
MsgBox UserForm1.TextBox1.Text & " Kullanıcısı için girilen parola doğru değil. Kontrol edip tekrar deneyin", vbCritical, ""
Exit Sub
    Else
    For j = 1 To ThisWorkbook.Sheets.Count
    Sheets(j).Visible = True
    Next j

    For i = 1 To ThisWorkbook.Sheets.Count
   ' If Sheets(i).Name = WorksheetFunction.VLookup(UserForm1.TextBox1.Text, Sayfa7.Range("A:C"), 3, 0) Then GoTo atla
    If WorksheetFunction.CountIfs(Sayfa7.Range("A:A"), UserForm1.TextBox1.Text, Sayfa7.Range("C:C"), Sheets(i).Name) > 0 Then GoTo atla
    If WorksheetFunction.VLookup(UserForm1.TextBox1.Text, Sayfa7.Range("A:d"), 4, 0) = 1 And Sheets(i).Name = "AnaSayfa" Then GoTo atla
    Sheets(i).Visible = xlVeryHidden
atla:
    Next i
    End If
End If
Unload Me

End Sub

Ekli dosyayı görüntüle 251155
Hocam, hesaba erişemediğim için geç bakabildim. Çalışmanız için çok teşekkür ederim.
 
Son düzenleme:

Tefo

Altın Üye
Katılım
22 Temmuz 2021
Mesajlar
33
Excel Vers. ve Dili
Office 2019 EN 32 Bit
Altın Üyelik Bitiş Tarihi
30-12-2027
Merhabalar,
Sadece adminin girebileceği diğerlerinden gizlenen sayfalarda çok fazla formül bulunuyor.
Eğer bu sayfa gizli ise o sayfadaki formülleri çalıştırmasını istemiyorum. Böyle bir uyarlama yapmak mümkün müdür?
 

DoğanD

Altın Üye
Katılım
22 Eylül 2023
Mesajlar
379
Excel Vers. ve Dili
Office 365 TR
Altın Üyelik Bitiş Tarihi
05-10-2028
Merhaba,

Bunun için ActiveSheet.calculate kodunu kullanıp, sadece belirli sayfaları hesaplatabilirsiniz. Fakat bunun için çalışma kitabında otomatik hesaplamayı kapatmalısınız ki bence risk teşkil ediyor. Tabii sizin kullandığınız dosyanın dinamikleri bunu karşılıyor olabilir, bilemem. Bunu kullansanız dahi -bilmediğim bir engelleme yolu olabilir- herhangi bir kullanıcı Formüller kısmındaki hesaplamayı Otomatik'e alarak tüm sayfaların hesaplanmasını sağlayabilir.

Bir diğer yolda, eğer gizli sayfalardaki mevcut değerler hiç bir koşulda işinize yaramayacaksa, gizli sayfadaki tüm formüllü hücrelerin başına tek tırnak ifadesi eklenebilir ve sayfa görünür olduğunda bunlar kaldırılabilir. Fakat bu makronun çalışma süresini arttıracağı gibi, formülleri tamamen işlevsiz konuma getirir.
 

Tefo

Altın Üye
Katılım
22 Temmuz 2021
Mesajlar
33
Excel Vers. ve Dili
Office 2019 EN 32 Bit
Altın Üyelik Bitiş Tarihi
30-12-2027
Merhaba,

Bunun için ActiveSheet.calculate kodunu kullanıp, sadece belirli sayfaları hesaplatabilirsiniz. Fakat bunun için çalışma kitabında otomatik hesaplamayı kapatmalısınız ki bence risk teşkil ediyor. Tabii sizin kullandığınız dosyanın dinamikleri bunu karşılıyor olabilir, bilemem. Bunu kullansanız dahi -bilmediğim bir engelleme yolu olabilir- herhangi bir kullanıcı Formüller kısmındaki hesaplamayı Otomatik'e alarak tüm sayfaların hesaplanmasını sağlayabilir.

Bir diğer yolda, eğer gizli sayfalardaki mevcut değerler hiç bir koşulda işinize yaramayacaksa, gizli sayfadaki tüm formüllü hücrelerin başına tek tırnak ifadesi eklenebilir ve sayfa görünür olduğunda bunlar kaldırılabilir. Fakat bu makronun çalışma süresini arttıracağı gibi, formülleri tamamen işlevsiz konuma getirir.
Cevabınız için teşekkür ederim fakat dosyadaki formüllerin hepsini manuel'e çevirmem kullanıcıların giriş yapacağı sayfalardaki formülleri de engelleyeceğinden dolayı çok kullanışlı olmayacaktır maalesef.
 
Üst