6 febrero, 2025

MACRO PARA INMOVILIZAR PARTE DE UNA HOJA EXCEL

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 enINMOVILIZAR HOJA

Comparte este post

15 comentarios en «MACRO PARA INMOVILIZAR PARTE DE UNA HOJA EXCEL»

    1. 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.

  1. 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

    1. 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.

  2. 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.

    1. 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.

    1. 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.

  3. 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

  4. 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

    1. 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

Si te ha gustado o tienes alguna duda, puedes dejar aquí tu comentario.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies