Soru Userform LOGİN Ekranı Kullanıcı Yetkilendirme

Katılım
15 Mayıs 2008
Mesajlar
95
Excel Vers. ve Dili
2010
türkçe
Her butonun Click olayının ilk satırına aşağıdaki kod yazılması gerekiyor.

If Yetki("ButonAdı") = False Then Exit Sub

ButonAdı yazan yere tıklanan butonun adı yazılacak. Örneğin CommandButton5_Click olayının ilk satırına

If Yetki("CommandButton5") = False Then Exit Sub

yazın.
(Ben kodları yazdım zaten sizin yeniden yazmanıza gerek yok. Ama eğer yeni buton eklerseniz yapmanız gereken şey yukarıda yazdığım şekildedir.

USERS Sayfasındaki buton isimlerinin altında bulunan 0 ve 1 rakamları yetkili ve yetkisiz tanımlamak için kullanılmıştır.
Siz istediğiniz şekilde yetkilendirme yapabilirsiniz.

USERS Sayfasına istediğiniz kadar kullanıcı ve istediğiniz kadar buton ekleyebilirsiniz.
Merhaba çalışmanız çok güzel olmuş bende kendi, çalışma dosyama ekledim lakin soracağım bir kaç konu var
1- Butonlara (f Yetki("ButonAdı") = False Then Exit Sub) Bu kodun eklenmesi gerekiyor diyorsunuz ama hata ("Yetki") Yazan kısım hata veriyor acaba tanımlama yapmakmı gerekiyor
2 Kullanıcıya göre sayfaları kapatma işlemi yapıyor lakin kullanıcı isterse sekmeler üzerine sağ tık ile sayfaları tekrar aktif edebiliyor bunu nasıl önleriz konu biraz eski ama hatırlıyacağınızı umuyorum teşekkürler
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,803
Excel Vers. ve Dili
2019 Türkçe
Merhaba.
1-Eklemiş olduğum dosyada Module3 içinde "Function Yetki(Buton As String) As Boolean" adında bir fonksiyon var bu fonksiyonu silmiş olabilir misiniz.
2-Bunu düzelttim. Artık manuel görünemez.

1. ve 2. sorunları çözülmüş şekilde dosyanız ekte.
 

Ekli dosyalar

Katılım
15 Mayıs 2008
Mesajlar
95
Excel Vers. ve Dili
2010
türkçe
Yardımlarınız için Teşekkür ederim o modülü nasıl silmişim anlmadım şimdi oldu sıkın Yok
 

veysikulte1

Altın Üye
Katılım
23 Ekim 2015
Mesajlar
83
Excel Vers. ve Dili
2016
Merhaba.
1-Eklemiş olduğum dosyada Module3 içinde "Function Yetki(Buton As String) As Boolean" adında bir fonksiyon var bu fonksiyonu silmiş olabilir misiniz.
2-Bunu düzelttim. Artık manuel görünemez.

1. ve 2. sorunları çözülmüş şekilde dosyanız ekte.

Hocam kusura bakmayın fikir olarak bir ekleme yaptım. Kullanıcı İşlemleri diye bir buton ekledim oradan yetkili kişi excel e dönmeden kullanıcıların yetkilerini belirleyebilecek yeni kullanıcı ekleyebilecek, kullanıcı silebilecek, yetkilerini değiştirebilecek şekilde bunu inceleyip kodlarda yardımcı olurmusunuz.
 

Ekli dosyalar

Katılım
15 Mayıs 2018
Mesajlar
5
Excel Vers. ve Dili
2010 Türkçe
Hocam kusura bakmayın fikir olarak bir ekleme yaptım. Kullanıcı İşlemleri diye bir buton ekledim oradan yetkili kişi excel e dönmeden kullanıcıların yetkilerini belirleyebilecek yeni kullanıcı ekleyebilecek, kullanıcı silebilecek, yetkilerini değiştirebilecek şekilde bunu inceleyip kodlarda yardımcı olurmusunuz.
Merhabalar istemiş olduğunuz şekilde bir çalışmam oldu size ve arkadaşlara lazım olacağını düşünüyorum.

Kullanıcılara yetki verme sayfası
Kullanıcı: Sezayi Şifre: 1234
Kullanıcı: Admin Şifre: Sp123456

https://i.imgyukle.com/2019/11/26/RY2M58.png

https://i.imgyukle.com/2019/11/26/RYUXAh.png

Sp.xls - 2.2 MB

 

emre67z

Altın Üye
Katılım
19 Haziran 2017
Mesajlar
216
Excel Vers. ve Dili
365
Merhabalar istemiş olduğunuz şekilde bir çalışmam oldu size ve arkadaşlara lazım olacağını düşünüyorum.

Kullanıcılara yetki verme sayfası
Kullanıcı: Sezayi Şifre: 1234
Kullanıcı: Admin Şifre: Sp123456

https://i.imgyukle.com/2019/11/26/RY2M58.png

https://i.imgyukle.com/2019/11/26/RYUXAh.png

Sp.xls - 2.2 MB

Çalışmayı siteye de yükleyebilir misiniz ? Dış kaynaklı sitelere ulaşım iznini vermiyor kurumda.
 

Furkan TARAKÇI

Altın Üye
Katılım
15 Şubat 2022
Mesajlar
51
Excel Vers. ve Dili
Microsoft® Excel® Microsoft 365 için MSO (Sürüm 2205 Derleme 16.0.15225.20172) 64 bit Türkçe
Her butonun Click olayının ilk satırına aşağıdaki kod yazılması gerekiyor.

If Yetki("ButonAdı") = False Then Exit Sub

ButonAdı yazan yere tıklanan butonun adı yazılacak. Örneğin CommandButton5_Click olayının ilk satırına

If Yetki("CommandButton5") = False Then Exit Sub

yazın.
(Ben kodları yazdım zaten sizin yeniden yazmanıza gerek yok. Ama eğer yeni buton eklerseniz yapmanız gereken şey yukarıda yazdığım şekildedir.

USERS Sayfasındaki buton isimlerinin altında bulunan 0 ve 1 rakamları yetkili ve yetkisiz tanımlamak için kullanılmıştır.
Siz istediğiniz şekilde yetkilendirme yapabilirsiniz.

USERS Sayfasına istediğiniz kadar kullanıcı ve istediğiniz kadar buton ekleyebilirsiniz.
@Muzaffer Ali Bey
Aşağıdaki kodları modül sayfasına ekledim fakat Yetki.Enabled yazan yerde hata alıyorum.

Function Yetki(Buton As String) As Boolean
Dim bak_Kullanici As Integer
Dim Bak_Yetki As Integer
With Sheets("USERS")
For bak_Kullanici = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(bak_Kullanici, 1) = Aktif_Kullanici Then
For Bak_Yetki = 4 To .Cells(1, .Columns.Count).End(xlToLeft).Column

If .Cells(1, Bak_Yetki) = Buton Then
If .Cells(bak_Kullanici, Bak_Yetki) = 1 Then
Yetki.Enabled = True 'BURADA HATA VERİYOR
ElseIf .Cells(bak_Kullanici, Bak_Yetki) = 0 Then
Yetki.Enabled = False
msgbox "Bu bölüme girmek için yetkiniz yok."
End If
Exit For
End If
Next
Exit For
End If
Next
End With
End Function
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,616
Excel Vers. ve Dili
Microsoft 365 Tr-64
Muzaffer beyin hazırladığı dosyada kodlar farklı.
Yetki.Enabled=....
ifadesi hatalı olmak zorunda. Orjinal kodlarda aynı satıra dikkat edin.
C++:
Function Yetki(Buton As String) As Boolean
    Dim bak_Kullanici As Integer
    Dim Bak_Yetki As Integer
    With Sheets("USERS")
        For bak_Kullanici = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
            If .Cells(bak_Kullanici, 1) = Aktif_Kullanici Then
                For Bak_Yetki = 3 To .Cells(1, .Columns.Count).End(xlToLeft).Column
                    If .Cells(1, Bak_Yetki) = Buton Then
                        If .Cells(bak_Kullanici, Bak_Yetki) = 1 Then
                            Yetki = True
                        ElseIf .Cells(bak_Kullanici, Bak_Yetki) = 0 Then
                            Yetki = False
                            MsgBox "Bu bölüme girmek için yetkiniz yok."
                        End If
                        Exit For
                    End If
                Next
                Exit For
            End If
        Next
    End With
End Function
 

Furkan TARAKÇI

Altın Üye
Katılım
15 Şubat 2022
Mesajlar
51
Excel Vers. ve Dili
Microsoft® Excel® Microsoft 365 için MSO (Sürüm 2205 Derleme 16.0.15225.20172) 64 bit Türkçe
Muzaffer beyin hazırladığı dosyada kodlar farklı.
Yetki.Enabled=....
ifadesi hatalı olmak zorunda. Orjinal kodlarda aynı satıra dikkat edin.
C++:
Function Yetki(Buton As String) As Boolean
    Dim bak_Kullanici As Integer
    Dim Bak_Yetki As Integer
    With Sheets("USERS")
        For bak_Kullanici = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
            If .Cells(bak_Kullanici, 1) = Aktif_Kullanici Then
                For Bak_Yetki = 3 To .Cells(1, .Columns.Count).End(xlToLeft).Column
                    If .Cells(1, Bak_Yetki) = Buton Then
                        If .Cells(bak_Kullanici, Bak_Yetki) = 1 Then
                            Yetki = True
                        ElseIf .Cells(bak_Kullanici, Bak_Yetki) = 0 Then
                            Yetki = False
                            MsgBox "Bu bölüme girmek için yetkiniz yok."
                        End If
                        Exit For
                    End If
                Next
                Exit For
            End If
        Next
    End With
End Function
@ÖmerFaruk Bey,
Dediğiniz gibi düzelttim fakat benim yetkilendirmeye çalıştığım buton sayfa üzerinde ActiveX denetimlerinden eklediğim commandButton olması fark eder mi? Çalışmadı çünkü
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,616
Excel Vers. ve Dili
Microsoft 365 Tr-64
Bu sadece bir fonksiyon. Fonksiyonun hangi adımlarda ne yaptığını bilmeden, fonksiyonu nerede çağırdığınızı görmeden, konu hakkında fazla yorum yapamam.
Örnek dosyada Muzaffer bey bir Userform için bunu yapmıştı.
Hatta PANEL isimli form içinde şu şekilde kullanmış. (Başka butonlarda da benzer kullanımlar var)
C++:
Private Sub CommandButton1_Click()
    If Yetki("CommandButton1") = False Then Exit Sub
    Application.Visible = False
    Unload Me
    Gelen.Show
End Sub
Şimdi siz sadece ÇALIŞMADI diyorsunuz.
Nerede ve neden çalışmadığını söyleyebilmem için bizi daha fazla bilgilendirmelisiniz.
 

Furkan TARAKÇI

Altın Üye
Katılım
15 Şubat 2022
Mesajlar
51
Excel Vers. ve Dili
Microsoft® Excel® Microsoft 365 için MSO (Sürüm 2205 Derleme 16.0.15225.20172) 64 bit Türkçe
Bu sadece bir fonksiyon. Fonksiyonun hangi adımlarda ne yaptığını bilmeden, fonksiyonu nerede çağırdığınızı görmeden, konu hakkında fazla yorum yapamam.
Örnek dosyada Muzaffer bey bir Userform için bunu yapmıştı.
Hatta PANEL isimli form içinde şu şekilde kullanmış. (Başka butonlarda da benzer kullanımlar var)
C++:
Private Sub CommandButton1_Click()
    If Yetki("CommandButton1") = False Then Exit Sub
    Application.Visible = False
    Unload Me
    Gelen.Show
End Sub
Şimdi siz sadece ÇALIŞMADI diyorsunuz.
Nerede ve neden çalışmadığını söyleyebilmem için bizi daha fazla bilgilendirmelisiniz.
@ÖmerFaruk Bey çalışma ektedir.
Kullanıcı Adı : Admin
Şifre: 1234
 

Ekli dosyalar

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,616
Excel Vers. ve Dili
Microsoft 365 Tr-64
Dosyanızda Userform1 bende açılmıyor.
Ve bu sebeple kodlarınızı ve formlarınızı anlamadığım için halen ne istediğinizi anlayamadım. Kusura bakmayın.
 

Furkan TARAKÇI

Altın Üye
Katılım
15 Şubat 2022
Mesajlar
51
Excel Vers. ve Dili
Microsoft® Excel® Microsoft 365 için MSO (Sürüm 2205 Derleme 16.0.15225.20172) 64 bit Türkçe
@ÖmerFaruk Bey,
Dosyayla ilgili kısa bir video çektim. Acaba sizde oluşan sıkıntı nerede kaynaklanıyor. Aslında video içerisinde başka soracağım şeylerde var ama konu başlığı açar sorarım. Dosyayı ekleyemediğimden indirme linki bırakıyorum.

 

Furkan TARAKÇI

Altın Üye
Katılım
15 Şubat 2022
Mesajlar
51
Excel Vers. ve Dili
Microsoft® Excel® Microsoft 365 için MSO (Sürüm 2205 Derleme 16.0.15225.20172) 64 bit Türkçe
@Muzaffer Ali Bey, Ömer Beyden bir dönüş olmadı siz yardımcı olabilirmisiniz?
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,803
Excel Vers. ve Dili
2019 Türkçe
Merhaba.
Videoda gösterdiğiniz hatayı gidermek için vba.chr(10) yazın.

Bu sorunun konu başlığı ile ilgisi yok.
Konu başlığı ile alakalı olmayan sorularınızı yeni bir başlık açarak sorunuz.
 
Son düzenleme:

Furkan TARAKÇI

Altın Üye
Katılım
15 Şubat 2022
Mesajlar
51
Excel Vers. ve Dili
Microsoft® Excel® Microsoft 365 için MSO (Sürüm 2205 Derleme 16.0.15225.20172) 64 bit Türkçe
@ÖmerFaruk Bey,
Dosyayla ilgili kısa bir video çektim. Acaba sizde oluşan sıkıntı nerede kaynaklanıyor. Aslında video içerisinde başka soracağım şeylerde var ama konu başlığı açar sorarım. Dosyayı ekleyemediğimden indirme linki bırakıyorum.

@Muzaffer Ali Bey, cevabınız için teşekkür ederim, fakat ben hatayı sormak için eklemedim videoyu onu zaten başka bir başlık açıp soracağımı belirtmiştim ama yine de cevabınız için teşekkür ederim. Ömer Bey sizin yazmış olduğunuz fonksiyonun benim çalışma kitabında çalışmama nedenini sorgularken örnek dosyayı talep etti ve örnek dosya da userform1 e erişemediğini dile getirdi. Ben bu yüzden, herhangi bir erişim sıkıntısının olmadığını göstermek için videoyu çektim. Asıl yardımcı olmanızı istediğim konu sayfa üzerinde ActiveX denetimlerinden eklediğim commandButton da çalışmamasıdır.
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
5,803
Excel Vers. ve Dili
2019 Türkçe
Users sayfasındaki bu başlıkları nerede kullanırsanız kullanın çalışır.

KULLANICI

PAROLA

Admin

KORUMA

CommandButton1

CommandButton2

CommandButton3

CommandButton4

USERS

INFO

GİRDİ

KAYIT

MİSAFİR

  

0​

0​

0​

1​

1​

0​

0​

0​

1​

Admin

1234​

 

1​

1​

1​

1​

0​

1​

1​

1​

1​

Furkan TARAKÇI

1234​

 

1​

1​

1​

1​

1​

0​

1​

1​

1​

            


Örnek.
Kod:
Private Sub denemebutonu_Click() ' Bu butonun ne olduğu yada ismi aslında hiç önemli değil.
    If Yetki("CommandButton1") = False Then Exit Sub 'Önemli olan burası.
'CommandButton1 metnini Users sayfasının 1. sayfasında arayıp, kullanıcı adına denk gelen kısımdaki değeri alır eğer değer 0 sa yetkisiz 1 ise yetkilidir.
' Bu örneğe göre "Misafir" Yetkisiz diğer ikisi yetkilidir.
'yani yetkili derken bu satırdan aşağıdaki kodlar çalışır.

    Application.Visible = False
    Unload Me
    Gelen.Show
End Sub
 
Üst