Poner contraseña para abrir userform

Quisiera saber si se puede poner contraseña para abrir un formulario.

En realidad lo que quiero es que cuando presione un botón me pida una contraseña, si esta bien puesta abra user1 mostrando el textbox1. Si no pone o es incorrecta abra el mismo user1 pero no me muestre el textbox1

También podri ser si es correcta abra user1 y si no abra user2. Lo único que tendría que hacer es generar otro user sin el textbox.

Probé que al presionar el botón me abra un user "clave" donde tengo un textbox1 y botón luego puse un

if textbox1= 1234 then

menu.show

txtcosto.visible=false

else

menu.show

txtcosto.visible=true

Pero no se porque hay veces que anda y otras veces no

Bueno espero me entiendan y me puedan ayudar

1 respuesta

Respuesta
1

Pon al final de tu código estas dos instrucciones:

Menu. Repaint
DoEvents

Con ellas se actualizará el formulario "menu".

Por cierto, ten cuidado con la propiedad "showModal" de los formularios. No puedes tener 2 formularios "modales" al mismo tiempo.

estoy trabajando en excel con vba

me dice que la función o la interfaz se marco como restringida o la función utiliza una automatización no admitida en visual

Entiendo que tienes 2 formularios llamados 'user1' y 'menu', y que 'txtCosto' está en el formulario 'menu'. En User1 estaría 'textBox1' y el botón. En la programación del botón yo pondría:

if textbox1= 1234 then
menu.show
menu.txtcosto.visible=false
else
menu.show
menu.txtcosto.visible=true
end if
Menu. Repaint
Doevents

No olvides quitar la propiedad 'showModal' de los formularios para que no te den problemas.

no me tira el error pero me hace lo mismo que contaba antes, por ej: pongo el código 1234 me abre el formulario sin mostrar el txt, lo cierro y cuando lo abro nuevamente no pongo el código y lo abre sin mostrarlo nuevamente, vuelvo a cerrarlo y a abrirlo y ahi si lo abre mostrando el txt.

como que quedara grabada la acción anterior

Por el momento lo solucione generando dos userform en el cual en una saque el txtcosto

If Val(TextBox1.Value) = 1234 Then
Unload Me
menu.Show
Else
Unload Me
menu2.Show
End If

igualmente me gustaría saber porque del error ya que en este caso tuve que generar otro userform prácticamente igual.

si no finalizo agradeciendo desde ya tu tiempo

No acabo de entender porqué te está haciendo lo que haces. ¿No estarás controlando que si 'textBox1=""' se salga o algo similar.

Prueba a poner la propiedad 'visible' de 'txtCosto' a true.

De todas formas, lo mejor para ver qué hace el programa es ejecutarlo paso a paso. ¿Sabes hacerlo?

En tu caso, yo pondría una instrucción 'stop' (o un punto de interrupción) como primera instrucción del evento 'click' del botón. Cuando llegue la ejecución a ese punto se parará y se pondrá la línea en amarillo. Con <F8> puedes ir ejecutando línea a línea y ver qué está haciendo.

Si con eso no lo consigues, cópiame exactamente el código de los dos formularios para que pueda revisarlo.

hice un archivo nuevo con solo esto para probar, te paso los códigos y si no te molesta pásame un mail y te envío este ejemplo para que veas como anda.

Ejecutarlo paso a paso no me sale igualmente no tira error. solamente muestra el txt cuando quiere jejej

userform1 tiene solo un txtcosto

userform2 tiene textbox1 y CommandButton1

Private Sub CommandButton1_Click()
If TextBox1 = 1234 Then
UserForm1.Show
UserForm1.txtcosto.Visible = False


Else


UserForm1.Show
UserForm1.txtcosto.Visible = True
End If
UserForm1.Repaint
DoEvents
End Sub

gracias

Envíame la hoja de cálculo con los 2 userForm a [email protected]

ya te envíe el libro

saludos

Pon este código en el botón:

UserForm1.txtcosto.Visible = (TextBox1 <> "1234")
UserForm1.Show
DoEvents

A mi me está funcionando correctamente.

El caso es que primero pones visible/oculto el objeto y luego presentas el formulario. Si lo haces al revés, primero veras (o no) el objeto en función de lo que tuvieras la última vez. Creo que ese era el problema.

Ahi anda muy bien, solo quería saber antes de finalizar para que es el DoEvents

saludos

Doevents hace que el Visual Basic atienda al resto de procesos del sistema.

Yo tengo costumbre de ponerlo en bastantes sitios dentro de la programación, principalmente en los bucles, para evitar que el programa pueda dejar 'pillado' el ordenador.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas