Hace unos días estuve realizando un pequeño programa que interactuaba en una hoja Excel. Como no estaba utilizando userforms, resulta que el «cuadro de mando» del programa se movía en función de si me desplazaba por la hoja o si movía la rueda del ratón.
Para evitar que la hoja se mueva y fijar solo la parte que te interesa mostrar, os dejo una pequeña macro que funciona cuando abres tu trabajo:
Private Sub Workbook_Open()
Sheets("Portada").ScrollArea = "A2:M45"
End Sub
Esta macro inmoviliza la hoja «Portada» en el área entre A2 y M45, no permitiendo movimientos en horizontal ni vertical.
Por cierto, debéis colocarla en el modulo: «ThisWorkbook».
Espero que os sirva a la hora de presentar vuestros programas.
Saludos 😉
Descarga el archivo pulsando en: INMOVILIZAR HOJA
Gracias. Justo lo que andaba buscando y funciona perfecto
Me alegro que te haya servido, un saludo Francis 😉
Si quisiera aplicarlo al libro en general porque se manejo muchas gráficas que ajustes deberia de hacer?
Hola Jorge:
Puede utilizar dos macros: una para bloquear el área seleccionada y la otra para desbloquearla.
Sub BLOQUEAR()
rRango = Selection.Address(ReferenceStyle:=xlA1, RowAbsolute:=False, ColumnAbsolute:=False)
ActiveSheet.ScrollArea = rRango
End Sub
Sub DESBLOQUEAR()
ActiveSheet.ScrollArea = Empty
End Sub
Además, si quieres puedes asignar las macros a la barra de herramientas, este es el tutorial:
https://support.office.com/es-es/article/Asignar-una-macro-a-un-bot%25C3%25B3n-728c83ec-61d0-40bd-b6ba-927f84eb5d2c?ui=es-ES&rs=es-ES&ad=ES&fromAR=1
Saludos.
hola buenas, un gusto saludarte, mi aprecio y respeto, quiero consultar lo siguiente: tengo una hoja excel 2013 cualquiera y debo llenarla de datos y necesito de que al salir de esta hoja de datos, todas las filas con datos se bloqueen (con una clave) y cuando vuelva a entrar a esta hoja las filas con datos anteriores esten bloqueados con clave (y no puedan modificar, ni editar, si pueda sumar ordenar copiar) y se pueda continuar escribiendo en las siguientes filas datos nuevos. la hoja debiera estar protegida solo a la modificacion con una contraseña al igual que el editor del viausl basic . quedo muy agradecido de antemano gracias atte enpabu@yahoo,es
Hola Enrique:
Prueba pegando esté código en el editor de VBA en ThisWorkBook.
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Cells.Select
With Selection
Control = Application.CountA(Selection)
End With
ActiveSheet.Unprotect ("123")
Selection.Locked = False
If Control > 0 Then
ActiveSheet.Columns.SpecialCells(xlCellTypeConstants, 23).Select
Selection.Locked = True
ActiveSheet.Protect ("123")
End If
End Sub
Espero que te sea de utilidad. Saludos.
Hola. Tengo una duda. ¿cómo puedo hacer lo mismo pero con dos o más rangos no adyacentes?. Ejemplo si quiero que sea desde A1:B5 pero también A8:B12.
Hola Luis:
No es posible asignar al scrollarea dos rangos diferentes. No sé exactamente a que te refieres, pero desde luego el area del scroll no se puede aplicar en varios rango simultáneamente.
Saludos.
hola oye una pregunta porque no puedo bloquear mis hoja de excel son dos hojas las que quiero bloquear
Hola Luis:
Si sigues las instrucciones podrás bloquear la parte que especifiques de tu hoja excel o de varias. Otra cosa es que quieras bloquear la hoja completa para que no se pueda modificar, en ese caso es otra cosa distinta a la que explico en el post y lo deberías hacer a través de la pestaña Seguridad de tu archivo de Excel.
Saludos.
Hola como estas:
Ya genere la Macro y al momento de darle ejecutar me funcionan, pero al momento de abrir mi archivo y volverlo abrir ya no se realiza la acción de que se quede inmovilizado el área que necesito.¿Que función requiero para que al momento de abrir mi documento excel trabaje esta macro? saludos
Hola Erik:
La macro debe colocarle en el módulo ThisWorkBook de tu editor de VBA con el evento OPEN (que ya está indicado en la macro).
Saludos.
Hola Amigos Necesito saber si se puede, tengo un libro de saldos de clientes, cada hoja es para un cliente, la primera hoja es base de datos de clientes, y el libro contiene mas 80 hojas pero necesito que la primera hoja que fija, cuando me desplazo en las siguientes hojas desde las 2 hasta la 80 si se podría y como se haría y si me podrían decir Gracias
Hola OsKAr:
Con esta macro, en Thisworkbook, al abrir el libro se bloquean automáticamente todas las hojas excepto la primera. Desde A2:M45
Private Sub Workbook_Open()
Hojas = ThisWorkbook.Worksheets.Count
For i = 2 To Hojas
Sheets(i).ScrollArea = «A2:M45»
Next i
End Sub
Estimado Sr. Segu, le felicito por sus habilidades y capacidad en el dominio del VBA. Su aporte es muy apreciado