2017-08-02 3 views
0

Je suis nouveau à VBA.Avoir des défis pour le bouton de commande de code sur MS Excel VBA

J'ai une feuille de travail qui est protégée/verrouillée avec un mot de passe.

J'ai un contrôle CommandButton qui, lorsqu'il est cliqué, charge un formulaire utilisateur qui est utilisé pour entrer des enregistrements dans la feuille de calcul. Je le veux de telle sorte que lorsque le bouton de commande est cliqué, il demandera à l'utilisateur d'entrer le mot de passe non protégé (utilisé pour protéger/verrouiller la feuille de calcul), avant le chargement de l'UserForm.

Si l'utilisateur entre le mot de passe de déprotection correct, l'objet UserForm se charge. Si l'utilisateur entre le mot de passe de déprotection incorrect, un MsgBox affiche et l'UserForm ne chargera pas. Le problème est lorsque le bouton de commande est cliqué, l'utilisateur sera invité à entrer le mot de passe non protégé (boîte de dialogue Built-In Unprotect d'Excel), si l'utilisateur clique sur le bouton "Annuler", l'objet UserForm charge toujours. Ce n'est pas ce que je veux. Qu'est-ce que je veux est: Si le bouton "Annuler" est cliqué, le MsgBox affiche, et l'UserForm ne charge pas.

Ci-dessous mon code pour le bouton de commande:

Private Sub CommandButton1_Click() 
    On Error Resume Next 
    ActiveSheet.Unprotect 
    If Err <> 0 Then 
    MsgBox: 
     MsgBox "Incorrect Password. Unlock Failed!" 
    Else 
     UserForm3.Show 
    End If 
End Sub 

Répondre

0

Donc, voici mon code

UserForm1 Mise en page

enter image description here

notes: il y a une propriété PasswordChar dans Textbox1, définissez-le sur * pour que les utilisateurs ne voient pas le mot de passe saisi.

code pour votre bouton de commande sur le module:

Cela montrera la userform pour la vérification du mot de passe.

Sub Button1_Click() 

UserForm1.Show 

End Sub 

code pour UserForm1

C'est là que vous attribuez votre mot de passe à la variable de mot de passe.

Command Button1, vérifie si le mot de passe dans la zone de texte 1 est identique au mot de passe enregistré. si son même il Enlève la feuille avec le message supplémentaire et sinon le même alors il MSGBOX « mot de passe incorrect »

commande Bouton2 sera votre bouton d'annulation, ce cachera la UserForm1

Private Sub CommandButton1_Click() 

Password = "yourpassword" 

If UserForm1.TextBox1.Value = Password Then 
    Worksheets("Sheet2").Unprotect (Password) 
    'this is for unprotecting sheets 
    'or you can also use it to show Userform2 
    MsgBox "Sheet now unprotected or Userform2 now shows" 
    UserForm1.Hide 
    Userform2.Show 

Else 
    MsgBox "Incorrect Password" 
End If 

End Sub 

Pour CommandButton 2

Private Sub CommandButton2_Click() 

UserForm1.Hide 

End Sub