Çalışma Kitabı Açılışında 3 Kere Şifre Hakkı - Microsoft Excel


Şifre ile ilgili basit bir makro kodudur. Auto_Open kullanarak basit bir şifre kontrolü yapıyoruz. Eğer üst üste 3 kez yanlış şifre girilirse (şifre: 123) çalışma kitabını kapatıyor.

Kod


Option Explicit

Sub Auto_Open()
    
    Static sayac As Integer
    Dim kalan As Integer
    
    Do
        If sayac = 3 Then
            ThisWorkbook.Close False
        Else
            kalan = 3 - sayac
            If InputBox("Şifreyi girin." & " (Kalan Deneme: " & kalan & ")") = "123" Then
                GoTo devam
            Else
                sayac = sayac + 1
            End If
        End If
    Loop
devam:

End Sub

Kod (Açıklamalı)


Option Explicit

Sub Auto_Open()
    
    '--------------------------------------------------
    'Kaç kere yalnış şifre girildiğini statik değişkenle
    'saydıracağız. Static kullanmamızın sebebi de şu:
    'Normalde bir değişken değer tutma işlemini kod bitene
    'kadar yapar. Biz işlem bittikten sonra da bu değeri
    'kullanabilmeliyiz. Kod sonraki çalışmalarında
    'bu değer üzerinden hareket edebilecek ve 3 kere
    'şifre hakkını etkili bir şekilde uygulayabileceğiz.
    '--------------------------------------------------
    Static sayac As Integer

    '--------------------------------------------------
    'Kalan deneme sayısı için işlem yapıyoruz.
    'Bunun sonucunu değişkene aktarıyoruz.
    '--------------------------------------------------
    Dim kalan As Integer
    
    '--------------------------------------------------
    'Döngü ile işlem yap.
    '--------------------------------------------------
    Do
        '--------------------------------------------------
        'sayac değişkeninin değeri 3'e ulaştıysa işlem yap.
        '--------------------------------------------------
        If sayac = 3 Then

            '--------------------------------------------------
            'Çalışma kitabını kapat.
            '--------------------------------------------------
            ThisWorkbook.Close False
        Else
            '--------------------------------------------------
            'Kalan deneme sayısını hesapla.
            '--------------------------------------------------
            kalan = 3 - sayac

            '--------------------------------------------------
            'Şifreyi sor. Doğru ya da yanlış girilmesine göre işlem yap.
            '--------------------------------------------------
            If InputBox("Şifreyi girin." & " (Kalan Deneme: " & kalan & ")") = "123" Then

                '--------------------------------------------------
                'Eğer şifre doğru girildiyse şifre kontrolü
                'kodlarından komple çık. Bunun sonucunda
                'çalışma kitabını açacak.
                '--------------------------------------------------
                GoTo devam
            Else

                '--------------------------------------------------
                'Eğer şifre yanlışsa sayacı 1 artır.
                '--------------------------------------------------
                sayac = sayac + 1
            End If
        End If
    Loop
devam:

End Sub

Yararlanılan Kaynaklar
Etiketler
microsoft excel açıklamalı içerik microsoft excel vba