Macro que cuente hasta 3

Hola buenas tardes

en lo que necesito de su ayuda es en lo siguiente:

tengo el siguiente código en excel 2010:

Private Sub CommandButton3_Click()

Dim acceso As String

Dim cuenta, hasta, hola, ho

10: hasta = 3

acceso = "140808"

TextBox1 = SetFocus

ho = TextBox1

If TextBox1 = acceso Then

ActiveWindow.WindowState = xlMaximized

UserForm1.Show

TextBox1 = SetFocus Unload Me

Else

cuenta = cuenta + 1

If cuenta < hasta Then

MsgBox "Contraseña Incorrecta" & Chr(10) & Chr(10) & "!Ingrese Nuevamente¡" & Chr(10) & Chr(10) & "Le Quedan " & hasta - cuenta & Chr(1) & "INTENTO" & IIf(hasta - cuenta = 1, "", "S"), vbInformation, "ERROR DE CONTRASEÑA"

GoTo 10

Else

CommandButton4.Visible = True MsgBox "excedió el limite de intentos se cerrara el archivo" ActiveWorkbook.Close

End If

End If

Exit Sub

End Sub

Ese seria el código pero lo que pasa es que si acceso no es correcto me genera el msgbox pero me genera los avisos de seguido no me deja volver a digitar en el textbox1 otra opción de acceso.

agradezco de antemano el tiempo dedicado a mi petición

cordialmente

1 Respuesta

Respuesta
1

Te comento. El ciclo que tiene tu macro no permite regresar al textbox, porque el control en ese momento lo tiene el ciclo, es por eso que te aparece nuevamente el mensaje de error y no puedes regresar al textbox.

Esta es una solución que tengo, revísala y si quieres la puedes adaptar a lo que necesitas, ya le actualicé los mismos mensaje que tienes en tu macro.

Primero:

En VBA en Thisworkbook pon esto:

Private Sub Workbook_Open()
Worksheets("hoja2").Range("A1") = ""
UserForm1.Show
End Sub

En tu userform pon esto

Private Sub CommandButton3_Click()
'Form con password
'Por.Dam
If TextBox1 = "" Then
TextBox1.SetFocus
Exit Sub
End If
If TextBox1 = "140808" Then
Worksheets("hoja2").Range("A1") = ""
Unload Me
Else
TextBox1 = ""
TextBox1.SetFocus
Worksheets("hoja2").Range("A1") = Worksheets("hoja2").Range("A1") + 1
If Worksheets("hoja2").Range("A1") = 3 Then
MsgBox "excedió el limite de intentos se cerrará el archivo"
Application.DisplayAlerts = False
'ActiveWorkbook.Close
Else
MsgBox "Contraseña Incorrecta" & Chr(10) & Chr(10) & _
"!Ingrese Nuevamente¡" & Chr(10) & Chr(10) & _
"Le Quedan " & 3 - Worksheets("hoja2").Range("A1") & _
" INTENTO", vbInformation, "ERROR DE CONTRASEÑA"
End If
End If
End Sub
Private Sub UserForm_Terminate()
'Form con password
'Por.Dam
If TextBox1 = "" Then
MsgBox "Sin password, se cierra"
Application.DisplayAlerts = False
'ActiveWorkbook.Close
End If
If TextBox1 <> "140808" Then
MsgBox "Adiós"
Application.DisplayAlerts = False
'ActiveWorkbook.Close
End If
End Sub

Indicaciones

El conteo de intentos lo llevo en la Hoja2, cambia este nombre por otro nombre de hoja que no ocupes, es necesario, para poder llevar la cuenta.
La instrucción 'ActiveWorkbook. Close, va comentada en la macro, realiza tus pruebas y si te convence, quita el comentario para que se cierre el libro realmente.
Saludos. Dam
Si es lo que necesitas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas