Modificar y visualizar hoja según macro

Buenos días.
Deseo crear un macro que me reconozca el usuario y su contraseña cada usuario debe tener una función :
1º usuario.- Ver todo y modificar todo
2º usuario.- Ver solo una hoja y modificar esa hoja
3º usuario.- Solo ver dos hojas no puede cambiar nada.
Agradeceré si me pueden ayudar.
Jean P.

1 Respuesta

Respuesta
1
¿Qué version de excel utilizas?, ¿2007?
XP... te paso lo que tiene el archivo hasta el momento.
Private Sub CommandButton1_Click()
On Error GoTo Errorusuario
Dim strClave$
strClave$ = Application.WorksheetFunction.VLookup(TextBox1, Worksheets("Hoja4").Range("A2:B4"), 2)
If TextBox2 <> strClave$ Then
MsgBox "Usuario y/o clave incorrecta", vbOKOnly, "ERROR"
TextBox1 = ""
TextBox2 = ""
Exit Sub
End If
Application.Visible = True
If TextBox1 = "a" Then
ActiveWorkbook.Unprotect
Worksheets("Hoja2").Unprotect
Worksheets("Hoja3").Unprotect
Worksheets("Hoja2").Visible = True
Worksheets("Hoja3").Visible = True
Unload UserForm1
Exit Sub
End If
ActiveWorkbook.Unprotect
Worksheets("Hoja2").Unprotect
Worksheets("Hoja3").Unprotect
Worksheets("Hoja2").Visible = True
Worksheets("Hoja3").Visible = True
Worksheets("Hoja2").Protect
Worksheets("Hoja3").Protect
ActiveWorkbook.Protect
Unload UserForm1
Exit Sub
Errorusuario:
MsgBox "Usuario y/o clave incorrecta", vbOKOnly, "ERROR"
TextBox1 = ""
TextBox2 = ""
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
On Error Resume Next
Worksheets("Hoja2").Visible = xlVeryHidden
Worksheets("Hoja3").Visible = xlVeryHidden
Worksheets("Hoja2").Protect
Worksheets("Hoja3").Protect
ActiveWorkbook.Protect
End Sub
El código para excel 2007 seria:
En versiones anteriores no te puedo ayudar, pero te puede servir de referencia, no creo que varíe mucho. El botón se llama imprimir, pero da igual. Las hojas visibles o la protección de las hojas las tendrías que poner a voluntad, esta pensado para un usuario y clave alfanumérico.
Private Sub cmdImprimir_Click()
pass = False
If IsNumeric(TextBox1.Text) = False And IsNumeric(TextBox2.Text) = False Then
Select Case CStr(TextBox1.Text)
Case "uno"
If TextBox2.Text = "uno" Then
pass = True
Hoja10.Visible = xlSheetVeryHidden
Hoja9.Visible = xlSheetVeryHidden
Hoja8.Visible = xlSheetVeryHidden
Hoja7.Visible = xlSheetVeryHidden
Hoja6.Visible = xlSheetVeryHidden
Hoja5.Visible = xlSheetVeryHidden
Hoja2.Protect "passtemporal", contents:=True, Scenarios:=True
End If
Case "dos"
If TextBox2.Text = "dos" Then
pass = True
Hoja10.Visible = xlSheetVeryHidden
Hoja9.Visible = xlSheetVeryHidden
Hoja8.Visible = xlSheetVeryHidden
Hoja7.Visible = xlSheetVeryHidden
Hoja6.Visible = xlSheetVeryHidden
Hoja5.Visible = xlSheetVeryHidden
Hoja2.Protect "passtemporal", contents:=True, Scenarios:=True
End If
Case "tres"
If TextBox2.Text = "tres" Then
pass = True
Hoja10.Visible = xlSheetVeryHidden
Hoja9.Visible = xlSheetVeryHidden
Hoja8.Visible = xlSheetVeryHidden
Hoja7.Visible = xlSheetVeryHidden
Hoja6.Visible = xlSheetVeryHidden
Hoja5.Visible = xlSheetVeryHidden
Hoja2.Protect "passtemporal", contents:=True, Scenarios:=True
End If
Case Else
pass = False
End Select
End If
If pass = True Then
UserForm1.Hide
End If
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
ThisWorkbook.Close
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas