Como hacer que dentro de una misma planilla, se puedan ocultar algunos campos según quien la trabaje?

Si tengo una planilla en la que deben trabajar distintas personas, pero quiero que una persona vea la parte de costos solamente y actualice esa parte, que la otra persona pueda ver e ingresar sólo los datos de los ingresos y que otra persona pueda ver toda la información. ¿Cómo puedo hacer para restringir los accesos?

Ojalá me puedan ayudar.

1 respuesta

Respuesta
1

Lo ideal es que cada uno trabaje en hojas separadas.

Pero si deben trabajar en la misma hoja también es posible, ocultando filas y/o columnas por rangos de usuarios. No es posible ocultar 'campos' es decir solo ciertas celdas sino que se ocultan filas o col enteras.

En ambos casos (hojas o rangos separados) se solicita usuario y clave al abrir el libro (evento Open) o al activar esa hoja con los rangos. Puede ser con un pequeño formulario o directamente con un InputBox. Y según cada usuario se muestra u ocultan los elementos.

Hola Elsa! muchas gracias por responder. Sí, debe ser en la misma hoja y ¿cómo se haría para ocultar ciertas columnas con claves? Saludos

Bien, imaginé entonces:

- Una hoja llamada 'Resumen'

-3 usuarios: Ana, Juan, Camila

-Cada usuario tiene un conjunto de col: A:C, E:G y P:R respectivamente.

Podrás colocar el primer código en el evento Open del libro o en el evento Activate de la hoja, haciendo la llamada:

Private Sub Workbook_Open()
Call Permisos
End Sub

Luego en un módulo coloca cada macro ;

Sub Permisos()
'x Elsamatilde
'va en el evento Open o al activar la hoja (evento Worksheet_Activate)
Dim usua As String
usua = InputBox("Ingresa tu usuario")
Select Case usua
Case Is = "Ana"
    Call muestraAna
Case Is = "Juan"
    Call muestraJuan
Case Is = "Camila"
    Call muestraCamila
End Select
End Sub

y las que se llaman desde los Case:

Sub muestraAna()
'desproteje la hoja
Sheets("Resumen").Select
ActiveSheet.Unprotect "tu_clave"
ActiveSheet.Columns("A:C").Hidden = False
ActiveSheet.Protect "tu_clave"
End Sub
Sub muestraJuan()
'desproteje la hoja
Sheets("Resumen").Select
ActiveSheet.Unprotect "tu_clave"
Columns("E:G").Hidden = False
ActiveSheet.Protect "tu_clave"
End Sub
Sub muestraCamila()
'desproteje la hoja
Sheets("Resumen").Select
ActiveSheet.Unprotect "tu_clave"
Columns("P:R").Hidden = False
ActiveSheet.Protect "tu_clave"
End Sub

Además necesitas otra macro que debe ser llamada cuando el usuario abandona su tarea, y deben ser colocadas en el evento Deactivate de la hoja y también en el evento BeforeClose y/o BeforeSave para evitar que quede alguna copia con las col visibles.

Por ej:

Private Sub Worksheet_Deactivate()
Call ocultaCol
End Sub

Y en el módulo ésta otra:

Sub ocultaCol()
ActiveSheet.Unprotect "tu_clave"
Sheets("Resumen").Columns("A:C").Hidden = True
Sheets("Resumen").Columns("E:G").Hidden = True
Sheets("Resumen").Columns("P:R").Hidden = True
ActiveSheet.Protect "tu_clave"
End Sub

Reemplazá nombre de hojas, columnas y usuarios. Luego comentame.

Sdos.

Elsa

500Macros

Hola Elsa, gracias por tu rapidez la verdad no me manejo en macros, trataré de conseguir ayuda para pasar el código. te comento si me resulta.

Envíame tu libro indicando cuales son las col y te dejó explicado allí mismo. Mis correos aparecen en la portada de mi sitio. No hace falta que el libro tenga datos, sólo los encabezados de las col

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas