Pensé que esto sería simple, pero está resultando bastante difícil. Cualquier consejo o idea sería apreciado.VBA Cómo forzar a una función a regresar cuando se presiona un botón de formulario
Tengo un formulario en Excel que dice que si se presiona un botón específico, necesito que el usuario ingrese una contraseña antes de que se ejecute el código para ese botón.
tan sólo pudiera utilizar una caja de texto, sino que permitirá a cualquier persona para ver la contraseña cuando se escribe. Así que quiero usar un segundo formulario con un cuadro de texto y establecer que es el parámetro PasswordChar a *
Aquí es el problema. Quiero usar un código como éste
if checkPassword("Please enter your password") = False then exit sub
checkPassword
es una función que toma una cadena como parámetro. Esta función abre un formulario y coloca el mensaje en una etiqueta. El usuario debe ingresar la contraseña y hacer clic en Aceptar.
el sub btnOK_Click()
debe comprobar que la contraseña es correcta y luego forzar la función que abrió el formulario para devolver True si la contraseña era correcta o False es la contraseña incorrecta.
No puedo encontrar la forma de forzar el regreso de la función. Intenté establecer una variable global en Verdadero o Falso cuando el usuario hace clic en Aceptar y luego descarga el formulario. Esto hace que la Función retorne, pero también restablece todas las variables globales establecidas por el formulario.
Aquí es mi función que llama a 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
Aquí está la sub relacionado con el botón formas OK:
Private Sub passwordok_Click()
If Me.passwordtext.Text = "password" Then
passwordStatus = True
Else
passwordStatus = False
End If
Unload Me
End Sub
Hola Alex, gracias por esta solución. Probé la solución de Siddharth y funcionó bien (Muchas gracias a Siddharth nuevamente), pero su solución está más cerca de lo que originalmente quería hacer. Lo probé y funciona genial, mucho más simple y más pequeño. Gracias – PrestonDocks
Utilicé esto, funciona de maravilla, excepto que tuve que poner 'passwordStatus = Me.passwordtext.Text =" password "' después de 'descargarme' ya que la descarga restablece esa variable, ¿esto causará problemas? – user1759942