Private Sub Workbook_SheetActivate(ByVal Sh As Object) ' Bu olay, bir sayfa etkinle?tirildi?inde tetiklenir. ' Sadece Admin kullanıcısı de?ilse Authentication makrosunu ça?ır If Sh.Name <> "Login" And Environ("Username") <> "Admin" Then Call Authentication(Sh) End If End Sub Sub Authentication(targetSheet As Object) Dim username As String Dim password As String Dim allowedSheets() As String Dim canAccess As Boolean ' Get username and password from the input box username = InputBox("Username:") password = InputBox("Password:") ' Access control based on username and password Select Case username Case "Admin" If password = "admin" Then ' Admin user can access all pages MsgBox "Welcome, Admin!" ' You can add specific actions for Admin here canAccess = True Else MsgBox "Invalid password! Access denied." End If Case "User1" If password = "pass1" Then ' User1 can access Page1 allowedSheets = Split("Page1", ",") canAccess = True Else MsgBox "Invalid password! Access denied." End If Case "User2" If password = "pass2" Then ' User2 can access Page1 and Page2 allowedSheets = Split("Page1,Page2", ",") canAccess = True Else MsgBox "Invalid password! Access denied." End If Case Else MsgBox "Invalid username! Access denied." Sheets("Login").Activate End Select ' Sayfa kontrolü yapma If canAccess Then If SheetExists(targetSheet.Name) And Not IsInArray(targetSheet.Name, allowedSheets) Then MsgBox "Access denied. You do not have permission to access " & targetSheet.Name ' Kullanıcının yetkisi olmadı?ında Login sayfasına yönlendirme Sheets("Login").Activate Else MsgBox "Access granted to " & targetSheet.Name End If End If End Sub Function SheetExists(sheetName As String) As Boolean ' Belirtilen sayfanın var olup olmadı?ını kontrol etme fonksiyonu Dim ws As Worksheet On Error Resume Next Set ws = Worksheets(sheetName) On Error GoTo 0 SheetExists = Not ws Is Nothing End Function Function IsInArray(valToBeFound As Variant, arr As Variant) As Boolean ' Bir de?erin dizide olup olmadı?ını kontrol etme fonksiyonu Dim element As Variant On Error Resume Next IsInArray = (UBound(Filter(arr, valToBeFound)) > -1) On Error GoTo 0 End Function