Saltar al contenido

Registro de cambios en celdas con "usuarios creados" no con el "username"


Recommended Posts

publicado

Buenas tardes

Tengo unos problemas con un archivo que estoy realizando y me gustaría que me apoyaran con sus comentarios.

Tengo un archivo que cuenta con 4 hojas:

Datos

Base de datos

Registro

Inicio

Cree varios usuarios, donde 4 usuarios solamente pueden ver la hoja de datos.

Existe el administrador que puede ver todas las hojas.

lo que necesito es que se quede registrado que usuario realizo un cambio en alguna celda y se quede registrado en la hoja de Registro.

tengo una macro que me guarda el registro de alguna modificación pero es el usuario de la computadora (UserName) y yo quiero que se registren los usuarios que cree.

por otra parte en la hoja de Datos en la columna L "realizó" quisiera que cuando entre un usuario por ejemplo Rosalba a la hora de ingresar su usuario y contraseña y que además realice un cambio en alguna celda en automático se ponga el usuario en la columna L.

El archivo tiene un administrador que es Gerardo y su clave es gerardo

Hay otro usuario normal que cree de nombre rosalba y su contraseña es rosalba

Prueba 15marzo - copia.rar

publicado

Hola, lo que debes hacer es almacenar el usuario actual en una variable publica, entonces en vez de poner Environ("username") pones esa variable

Option Explicit

Public m_ActualUsuario As String

Sub Acceso()
Dim TablaUsuarios As Range
Dim Usuario, Clave As String
Dim clavecorrecta As String


On Error GoTo advr

Sheets("Inicio").Activate
Range("AA1").Select
Set TablaUsuarios = Range("AA2:AB7")
Usuario = UserForm1.TextBoxU
Clave = UserForm1.TextBoxC
clavecorrecta = Application.WorksheetFunction.VLookup(Usuario, TablaUsuarios, 2, False)

If clavecorrecta <> Clave Then GoTo advr

m_ActualUsuario = UserForm1.TextBoxU

Select Case Calve
Case "gerardo"
Sheets("Datos").Visible = -1
Sheets("Base de datos").Visible = -1
Sheets("Registro").Visible = -1
Call Muestra
Sheets("Datos").Activate
Case "mary", "ecuevas", "rosalba", "santiago", "margarita"
Sheets("Datos").Visible = -1
Sheets("Datos").Activate
End Select

Unload UserForm1

Exit Sub
advr:
MsgBox "EL USUARIO, LA CLAVE O AMBOS" & Chr(13) & "SON ERRONEOS", vbCritical
End Sub

Sub Oculta()
Sheets("Datos").Visible = 2
Sheets("Base de datos").Visible = 2
Sheets("Registro").Visible = 2
End Sub
Private Sub Muestra()
Sheets("Datos").Visible = -1
Sheets("Base de datos").Visible = -1
Sheets("Registro").Visible = -1
End Sub

Sub CERRAR()
If MsgBox("¿SEGURO QUE QUIERE SALIR?", vbYesNo) = vbYes Then
Unload UserForm1
ActiveWorkbook.Close
End If
End Sub
[/CODE]

[CODE]
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name = "Registro" Then Exit Sub
Application.EnableEvents = False
With ThisWorkbook.Sheets("Registro").Range("A" & Rows.Count).End(xlUp)
.Offset(1, 0).Value = m_ActualUsuario
.Offset(1, 1).Value = Sh.Name
.Offset(1, 2).Value = Replace(Target.Address, "$", "")
.Offset(1, 3).Value = ThisWorkbook.Sheets("Inicio").Cells(1, 1).Value
.Offset(1, 4).Value = Target.Value
.Offset(1, 5).Value = Date
.Offset(1, 6).Value = Time
End With
Application.EnableEvents = True
End Sub[/CODE]

Hay algunas cosas que cambié, hay mucho más por optimizar, pero lo mas importate es que quite un "END" que me volvió loco, ya que si usas End descargas todas las variables en memoria, no te aconsejo utilizarlo excepto que sea por algo en especial.

otro punto para que mejores es no incluir las contraseñas en el código, vos tenes que hacer una tabla asi

UnserName, Password, Permisos

Gerardo , gerardo , 1

Rosalba ,rosalba , 2

entonces si el usuario es administrador el permiso es 1 moderador 2 si es usuario común 3 y esto puede ser modificado sin tener que modificar el código.

Evita utilizar Goto e indexa bien el código.

  • Silvia bloqueó este tema

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.