Limitar desplazamiento en excel con teclas y ratón

He creado un documento Excel y en diversas hojas del mismo he incluido una macro para evitar que los usuarios del documento puedan seleccionar celdas fuera de un rango seleccionado. Esta es la línea de código:

Private Sub Worksheet_Activate()
ActiveSheet.ScrollArea = "A1:G35"
End Sub

La macro funciona a la perfección, pero el problema es que, aunque con no pueden seleccionarse celdas fuera de ese rango, sí pueden visualizarse si se mueve la rueda del ratón. 

Quisiera que los usuarios no pudiesen desplazarse con el ratón y visualizar dichas celdas, ya que dejan a la vista formulas secundarias. He visto en muchos sitios la opción de ocultar dichas celdas (buena, las filas y las columnas), pero el problema es que eso provoca que las formulas contenidas en dichas celdas no funcionen.

¿Cómo podría impedir que el usuario visualice las celdas que quedan fuera del rango que he seleccionado sin comprometer el funcionamiento del documento?

3 Respuestas

Respuesta
3

La mejor opción, a mi gusto, es ocultar todas las col que quedan a continuación de la última 'visible' para el usuario. Por ej, en la imagen solo se observa hasta la col M como si allí terminara la hoja Excel.

Para esto seleccioné desde la col N hasta la última de tu versión Excel y desde (seleccionar la col N, presionar juntas las teclas Ctrl, Mayús y Flecha a derecha) menú Formato, Ocultar.

Para evitar que los usuarios puedan 'mostrar' las columnas (o filas) ocultas se las puede ocultar desde este código colocado en un modulo:

Sub Macro1()
'x Elsamatilde
'
Columns("P:XFD").Select
    Selection.EntireColumn.Hidden = xlVeryHidden
End Sub

Si la hoja permanecerá protegida debes tener presente no bloquear las ocultas para evitar errores al intentar un cambio allí.

Para mostrar columnas ocultas desde macro, utilizarás este otro código:

Sub Macro3()
'
Columns("P:XFD").Select
    Selection.EntireColumn.Hidden = False
End Sub

He vuelto a probar la opción de ocultar las columnas o filas que no se utilizan y, aunque no sé que ocurrió la primera vez que lo intenté, ahora la hoja funciona perfectamente.

Tendré presente lo que me comentas de no bloquear las celdas ocultas para evitar errores al intentar un cambio en ellas.

¡Gracias por tu respuesta!

Para no confundir al resto de los lectores... lo dicho anteriormente no significa que no se puedan proteger celdas ocultas.... Sino solamente tener la precaución de revisar si esas celdas en algún momento recibirán cambios (ya sea por macro o como resultado de la selección de algún control en hoja) y en ese caso dejarlas desbloqueadas.

Sdos!

Respuesta
1

Pues no, ocultar filas o columnas no afecta en nada a las fórmulas, quizá las eliminaste/borraste al hacerlo, comenta que ocurrió exactamente.

Abraham Valencia

PD: Hay más formas de hacerlo como proteger la hoja y "ocultar" las fórmulas por ejemplo

Efectivamente, no sé que ocurrió la primera vez. He probado a ocultar las filas con fórmulas y aunque las oculto, la hoja sigue funcionando perfectamente.

Los demás puntos de protección de hoja (ocultar fórmulas o evitar la modificación de determinadas celdas) los he tenido presentes.

¡Gracias por tu respuesta!

Aja, que bueno. De nada y salu2

Abraham Valencia

Respuesta
1

Añade este código a la macro esto deshabilitara las flechas arriba, abajo, izquierda, derecha, inicio, fin, avpag, regpag, respecto al ratón te la debo, no hay eventos mouse para anular la rueda del mouse

Private Sub Worksheet_Activate()
ActiveSheet.ScrollArea = "A1:G35"
With Application
    .OnKey "{RIGHT}", ""
    .OnKey "{LEFT}", ""
    .OnKey "{DOWN}", ""
    .OnKey "{UP}", ""
    .OnKey "{PGDN}", ""
    .OnKey "{PGUP}", ""
    .OnKey "{UP}", ""
    .OnKey "{END}", ""
    .OnKey "{HOME}", ""
End With
End Sub
La pregunta no admite más respuestas

Más respuestas relacionadas