Macro contador de de acceso a USERFROM

Una consulta esta macros funciona bien:

-----------------------------------------------------------

Private Sub CommandButton1_Click()
'Valida usuario y contraseña
Set h = Sheets("PRINCIPAL")
existe = False
If TextBox1 = "" Or TextBox2 = "" Then
mensaje = MsgBox("NO HA INTRODUCIDO NINGÚN USUARIO, NI CONTRASEÑA EN FORMULARIO. . .", vbExclamation, "Hello")
Exit Sub
End If
'
t1 = IIf(IsNumeric(TextBox1.Value), Val(TextBox1.Value), TextBox1.Value)
t2 = IIf(IsNumeric(TextBox2.Value), Val(TextBox2.Value), TextBox2.Value)
For i = 24 To h.Range("B" & Rows.Count).End(xlUp).Row
If h.Cells(i, "B").Value = t1 And _
h.Cells(i, "E").Value = t2 Then
existe = True
Exit For
End If
Next
If existe = False Then
mensaje = MsgBox("EL USUARIO O CONTRASEÑA NO EXISTE EN EL SISTEMA. . .", vbExclamation, "Hello")
Else
Unload Me
mensaje = MsgBox("Hola", vbExclamation, "Hello")
End If
End Sub
-------------------------------------------------
Pero quisiere aumntarle otra cosa mas, que solo se realizen 3 intentos de ingresar si no accese al formulario que se cierre el formulario y todo el libro.

1 Respuesta

Respuesta
1

Te anexo la macro actualizada.

Primero debes poner la siguiente línea al principio de todo el código, en las Declaraciones General, debe ser la primer línea de todo el código del userform

Dim n

Esto debe ir en tu botón:

'
Private Sub CommandButton1_Click()
    'Valida usuario y contraseña
    Set h = Sheets("PRINCIPAL")
    n = n + 1
    If n = 3 Then
        MsgBox "Se realizaron 3 intentos, el libro se cerrará"
        ThisWorkbook.Close False
    End If
    existe = False
    If TextBox1 = "" Or TextBox2 = "" Then
        mensaje = MsgBox("NO HA INTRODUCIDO NINGÚN USUARIO, NI CONTRASEÑA EN FORMULARIO. . .", vbExclamation, "Hello")
        Exit Sub
    End If
    '
    t1 = IIf(IsNumeric(TextBox1.Value), Val(TextBox1.Value), TextBox1.Value)
    t2 = IIf(IsNumeric(TextBox2.Value), Val(TextBox2.Value), TextBox2.Value)
    For i = 24 To h.Range("B" & Rows.Count).End(xlUp).Row
        If h.Cells(i, "B").Value = t1 And _
            h.Cells(i, "E").Value = t2 Then
            existe = True
            Exit For
        End If
    Next
    If existe = False Then
        mensaje = MsgBox("EL USUARIO O CONTRASEÑA NO EXISTE EN EL SISTEMA. . .", vbExclamation, "Hello")
    Else
        n = 0
        Unload Me
        mensaje = MsgBox("Hola", vbExclamation, "Hello")
    End If
End Sub

Hola dante esta bien todo el codigo pero al momento de salir del libro me tira este error:

Sabes DANTE siempre tuve problemas para hacer eso incluso en el boton de salir del USERFROM para ovbiar eso use est: "ActiveWorkbook.Save" Que lo guarte y se salga del libro de trabajo. pero en las modificaciones lo coloque y me sale error donde podria colocar ese codigo ya mencionado o cual crees q puede ser el problema.

.wdeqweqweqwe

Tienes alguna otra macro. O algo en los eventos de Thisworkbook

te mando el archivo, como lo hago?

Private Sub CommandButton1_Click()
    'Valida usuario y contraseña
    Set h = Sheets("PRINCIPAL")
    n = n + 1
    If n = 3 Then
        MsgBox "Se realizaron 3 intentos, el libro se cerrará"
 ------> ThisWorkbook.Close False

y si le decimos que "ThisWorkbook.Close False" antes de salir guarde los cambios y despues se salga del sistema.

Prueba con esto

ThisWorkbook.Close True

Igual dante me sale error, te lo paso el archivo para que lo veas donde te lo envío.

Yo no tengo el error. Tal vez tu archivo tiene algo más.

Envíame tu archivo a este correo:

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Luishao Shimura Nakata

ok

En tu archivo tienes este evento en thisworkbook

Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
  With Application
    If Val(.Version) > 11 Then ExecuteExcel4Macro "show.toolbar(""ribbon"",1)" _
      Else: .CommandBars("worksheet menu bar").Enabled = True
  End With
End Sub

Tienes que quitarlo, ese es el problema.

Si lo quieres conservar, entonces realiza lo siguiente:

- En tu userform1, cambia 

Dim n

Por 

Public n

- En thisworkbook, cambia el evento Workbook_WindowDeactivate por esto:

Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
    valor = UserForm1.n
    If valor = 3 Then Exit Sub
  With Application
    If Val(.Version) > 11 Then ExecuteExcel4Macro "show.toolbar(""ribbon"",1)" _
      Else: .CommandBars("worksheet menu bar").Enabled = True
  End With
End Sub

No olvides valorar la respuesta.

Te envié la respuesta. Mi macro estaba bien, el problema lo tenías en tu macro.

Hola Dante lo cierra bien pero sale esto:

Cierra el libro de trabajo, pero no el programa (EXCEL) en si no lo hace.

Esta función es para cerrar el libro.

Esta es tu petición original:

Si no accese al formulario que se cierre el formulario y todo el libro.

Si quieres salir de excel, entonces cambia esta línea:

ThisWorkbook.Close False

Por estas:

    Application.DisplayAlerts = False
    Application.Quit

.[. No olvides valorar la respuesta.

Dante esto:

Application.DisplayAlerts = False
    Application.Quit

Este codigo sale del todo no?, pero que pasa si no guarde mis datos?. Como seria el codigo para que guarde y luego salga del todo?.

Intente con este codigo:

__________________________

ActiveWorkbook.Save
Application.Quit

______________________

Funciona bien pero lo malo que otra vez me sale el mensaje de:

"El usuario o contraseña no existe en el sistema", cosa que no deberia salir; ya se deberia de cerrar.

Ahora si lo cambio

______________________

Application.Quit

ActiveWorkbook.Save
___________

Sale del sistema sin guardar los datos, y ademas de eso no me repite el mensaje de nuevo. cierra todo bien. Pero sin guardar nada.

[Estimado, eso no es lo que pediste.

- Ya te hice la macro para cerrar.

- Ya te corregí tu evento window_deactivate

- Pediste salir de excel y también te envié el código.

Pero ahora estás pidiendo otra cosa. Tendría que verificar tu archivo, revisar nuevamente tus eventos y probar.

Y no has tenido la amabilidad de valorar la respuesta a pesar de que ya te entregué 3 soluciones y las 3 me funcionan.

Con gusto te ayudo pero debes crear otra pregunta.

Te explico todo está bien. Guarda y cierra el libro. Pero no cierra el programa se mantiene abierto. Como se muestra en la imagen. Probé con códigos de cerra y guardar pero igual siguen el programa abierto, el el libro cerrado. Para que cierre  el programa completo aplico esto: "Application.Quit"

Que lo cierra todo el programa.

Aplicando esto:

ActiveWorkbook.Save o ThisWorkbook.Close True

Application.Quit"

Cierra el libro pero aún sigue abierto programa como la imagen de arriba.

Te adjuntare el archivo hasta donde avanzamos y los códigos que me diste.

Crei que al terminar una consulta se valoraba.

Si la valoro está. La pregunta casi sería la misma.

Gracias por la paciencia y ayuda, esperaré tu respuesta.

Esto es lo que pediste:

Pero quisiere aumntarle otra cosa mas, que solo se realizen 3 intentos de ingresar si no accese al formulario que se cierre el formulario y todo el libro.

.

Ahí no dice salir de excel ni que se guarden los cambios antes de salir.

Esa debería ser tu otra pregunta, que guarde y salir de excel.

.

La consulta está más que terminada, solamente faltó tu valoración, pero ya no te lo voy a pedir.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas