¿Hay un modo de que cuando se abra el Userform con el botón "Ingresar datos" se detenga la macro?

Que más Sr. Marco.
Lo que me envío quedo buenísimo! Lo felicito es un duro en esto.
Como estoy haciendo un modulo de excel para ingresar clientes, eso que me dio usted, me sirve para que la chica escargada no pueda borrar los datos... Pero tengo una inquietud, hice un formulario para ingresar esos datos, y cuando he llenado todos los datos del cliente y le doy guardar me pide la clave del MsgBox. Porque esta colocando los datos en el campo de la macro.
Como la que ingresa los datos es la chica, no le puedo dar la clave... Y es engorroso estar viniendo y darle acceso.
¿Mi pregunta es? Hay alguna opción para que cuando se abra el UserForm con el botón "Ingresar Datos" se Detenga la macro que usted me corrigió, haga un Stop! O algo por estilo, para que el Formulario guarde el dato en el campo de la columna (del ejemplo que usted me envío) y cuando le de clic en el botón "Salir" del Formulario vuelva y active la macros para no dejar borrar datos, ...
Es con el fin de que la chica ingrese los datos, solo desde el formulario... Obviamente el UserForm1 no tiene ningún botón de borrar. Y así yo poder dejarla ingresar datos pero que siga activa la macros de no dejar borrar datos sin la clave.
Gracias por su colaboración.
ATT; Luisfer

1 Respuesta

Respuesta
1
Lo primero que debes hacer es definir una variable publica
en cualquier modulo que tengas creado.
Si no tienes un modulo inserta uno
Y la publicas, algo como esto:
Public sw as Boolean
Por defecto todas las variables tipo Boolean son Falso
entonces dentro de tu formulario has lo que sigue, si tienes
los comando activos solo inserta en el interior esto hará
que al inicializar la variable quede en verdadero y
que al finalizar quede en falso.
Private Sub UserForm_Initialize()
sw = True
End Sub
Private Sub UserForm_Terminate()
sw = False
End Sub
Ahora en la macro que te envíe con anterioridad debes
validar esta variable quedando algo como sigue:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Clave As String
If (Target.Column >= 2 And Target.Column = 2 And Target.Row "abcd" Then
MsgBox ("Clave no válida")
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
GoTo FIN
End If
End If ' y esta para terminar la condición.
End If
FIN:
End Sub
Espero te haya ayudado y de nuevo no olvides cerrar la pregunta
y evaluarme.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Clave As String
If (Target.Column >= 2 And Target.Column = 2 And Target.Row "abcd" Then
MsgBox ("Clave no válida")
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
GoTo FIN
End If
End If ' y esta para terminar la consición.
End If
FIN:
End Sub
Espero te haya ayudado y de nuevo no olvides cerrar la pregunta
y evaluarme.
$%&#%&, no tengo idea porque queda mal la macro, pero lo esencial es que debes crear una validacion mas dentro de la macro despues de la linea que valida el rango y antes de pedir la clave poniendo lo siguiente
If sw=false then
Y ya, luego por supuesto finalizar el If tal como lo indica la respuesta anterior, esper se entienda.
Te voy a enviar el ejemplo a tu correo, lo revisas y me lo corriges... de más o menos como podría quedar...
No entendí casi, o mejor dicho si, pero no me funciono.
ATT; Luis
Te envíe la respuesta a tu correo personal, solo como estadística del foro:
La respuesta que te di está correcta solo que no estuvo bien aplicada. No olvides cerrar la pregunta y calificarme.
Ok no te preocupes,
excelente respuesta y solución, espero sigas ganando muchas calificaciones
Lo que me enviaste logro llenar mis expectativas, gracias por su colaboración.
Estaremos en contacto. att, luis

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas