Ho pensato che sarebbe stato semplice, ma si sta dimostrando piuttosto difficile. Qualsiasi consiglio o idea sarebbe appretiato.VBA Come forzare una funzione a ritornare quando si preme un pulsante di forma
Ho un modulo in Excel che se si preme un determinato pulsante, ho bisogno che l'utente inserisca una password prima che venga eseguito il codice per quel pulsante.
ho potuto solo usare un InputBox, ma che permetterà a nessuno di vedere la password quando viene digitato. Quindi voglio utilizzare un secondo modulo con una casella di testo e impostare è il parametro PasswordChar a *
Qui è il problema Voglio usare il codice come questo
if checkPassword("Please enter your password") = False then exit sub
checkPassword
è una funzione che prende una stringa come parametro. Questa funzione apre un modulo e inserisce il messaggio in un'etichetta. L'utente deve inserire la password e fare clic su OK.
il sub btnOK_Click()
deve verificare che la password sia corretta e quindi forzare la funzione che ha aperto il modulo per restituire True se la password era OK o False è la password non corretta.
Non riesco a capire come forzare la funzione a tornare. Ho provato a impostare una variabile globale su True o False quando l'utente fa clic su OK e quindi scarica il modulo. Ciò rende il Function restituito, ma reimposta anche tutte le variabili globali impostate dal modulo.
Qui è la mia funzione che chiama la forma
Function checkPassword(message As String) As Boolean
frmPassword.Show
frmPassword.passwordMsg.Caption = message
'passwordStatus is a global variable
If passwordStatus = True Then checkPassword = True Else checkPassword = False
End Function
Ecco il sub collegato al pulsante forme OK:
Private Sub passwordok_Click()
If Me.passwordtext.Text = "password" Then
passwordStatus = True
Else
passwordStatus = False
End If
Unload Me
End Sub
Ciao Alex, grazie per questa soluzione. Ho provato la soluzione di Siddharth e ha funzionato benissimo (Mille grazie a Siddharth di nuovo), ma la tua soluzione è più vicina a ciò che volevo originariamente fare. L'ho provato e funziona benissimo, molto più semplice e più piccolo. Grazie – PrestonDocks
L'ho usato, funziona benissimo, tranne che ho dovuto inserire 'passwordStatus = Me.passwordtext.Text =" password "' dopo il comando 'scarica me', poiché lo scaricamento ripristina la variabile, questo causerà problemi? – user1759942