Inhabilitar Proteger/Desproteger...

Patán: te molesto por lo siguiente (hace rato que no lo hago)...
Unas hojas tienen contraseña para modificarse (desde VBA, Activesheet.Protect "xxx"), y tengo un UF, con un TextBox donde el Usuario AUTORIZADO puede desproteger esa hoja, colocando la contraseña...
Lo que necesito es que, el NO AUTORIZADO, necesite conocer, al menos 2 contraseñas para desproteger la hoja... ¿Me explico? Saber la Password del UF, primero (para abrir el TextBox que te digo), y conocer la de la hoja (además, al abrir el UF queda registrado).
Funciona perfecto desde el UF: lo que necesito es DESHABILITAR LA OPCIÓN DE LA BARRA.
Gracias
Respuesta
1
-Crea un Userfor1 con un TextBox1 y un Botón de Aceptar
-Crea un Userfor2 con un TextBox2 y un Botón de Aceptar
Al Botón de Aceptar del UF1 le pones este código:
Private Sub CommandButton1_Click()
Dim Clave1
Clave1 = TextBox1.Value
If Clave1 = 1234 Then
Unload Me
UserForm2.Show
Else
MsgBox ("Clave inválida")
End If
End Sub
y al del UF2 le pones este código:
Private Sub CommandButton1_Click()
Dim Clave2, Usuario
Clave2 = TextBox2.Value
Range("Clave2") = Clave2
Usuario = Range("ElUsuario")
If Usuario <> "Invalido" Then
ActiveSheet.Unprotect "123"
Unload Me
Else
MsgBox ("Clave inválida")
End If
End Sub
-----
Te creas una Hoja adicional en Excel para validar a los Usuarios:
- En A1 escribes: El Usuario de hoy:
- En C1 pones la fórmula: =SI(ESERROR(BUSCARV(D1;Usuarios;1));"Invalido";BUSCARV(D1;Usuarios;1))    A esta celda le llamarás ElUsuario (Asignandole nombre por el Menú Insertar Nombre Definir)
- Desde A2 hacia abajo colocas a todos los usuarios que pueden accesar
- Desde C2 hacia abajo las claves que solo cada uno de ellos conocerá
- A ese rango de Claves le asignarás un nombre (Usuarios)
- A la Celda D1 le asignarás el nombre Clave2
[El último usuario que entre quedará registrado el la hoja de control]
Al color de la Fuente en esta hoja le pondrás Blanco, luego Protegerás y ocultarás esta hoja de validación con una clave que solo tu conocerás.
"Para lo de ocultar en la Barra averigua un poco sobre este comando: Application.CommandBars("Proteger").Controls(1).Enabled = False"
Patán: la primera parte, ya la tengo (no exactamente igual, pero resulta sin errores). La pregunta hacía referencia a tu último párrafo: ¿En qué evento coloco el código del CommandBars? Probé en Sheets_Activate(), pero no resulta: sigue activo...
Un abrazo
Abre Visual (ALT+F11) y copia este códico en la hoja2 que es donde validamos los usuarios:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.CommandBars.FindControl(ID:=30029).Enabled = False
End Sub
[Me avisas cualquier cosa, ah! Y no olvides calificar]
¡Excelente, Patán, ESE era el Código!
Pero como no quiero "trampas", lo puse en el evento Activate(), de manera que JAMÁS puedan acceder a desproteger la Hoja, salvo que sea el Propietario (desde el UserForm al que sólo él tiene acceso).
Cualquier observación: [email protected]
(Para poder ponerte las 5 estrellitas ahora)
Un abrazo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas