Inmovilizar páneles de todas las hojas de un archivo de Excel mediante un formulario vba
Para este artículo les comparto un formulario realizado en Excel vba para inmovilizar páneles en todas las hojas del archivo activo.
Cómo funciona
Como sabemos la opción de Inmovilizar páneles que se encuentra en la pestaña de VISTA nos ayuda a dejar fijas filas o columnas de nuestra hoja de Excel, útil por ejemplo cuando deseamos que los encabezados de una tabla queden fijos.
En nuestro ejemplo tenemos dos botones los cuales nos servirán para Inmovilizar y movilizar páneles.
Figura 1. Ejemplo para inmovilizar y moviliar páneles en Excel.
Si presionamos Movilizar páneles quitará todos los páneles inmovilizados de todas las hojas del archivo.
En cambio, si presionamos Inmovilizar páneles tendremos un formulario donde mediante un control de RefEdit podremos elegir la celda, fila o columna donde deseamos que se inserte la división del pánel y se quede fijo.
Figura 2. Inmovilizando páneles en Excel con formulario vba
En Figura 3 vemos el formulario en acción.
Figura 3. Formulario para inmovizar páneles en Excel.
Código vba de la macro
Inmovilzar páneles.
Ubicación: formulario frmInmovilizarPaneles
'--------------------------------------------------------------------------------------- ' Module : frmInmovilizarPaneles ' Author : MVP Excel, Sergio Alejandro Campos ' Date : 28/11/2014 ' Purpose : Inmovilizar páneles en todas las hojas '--------------------------------------------------------------------------------------- ' Option Explicit ' Private Sub CommandButton1_Click() ' 'Declaramos variables Dim strHojaActual As String Dim Hoja As Object Dim miRango As String Dim intPosicion As Integer Dim intLargo As Integer Dim miRango2 As String ' 'Mandamos llamar el procedimiento para movilizar páneles Call MovilizarPanales ' strHojaActual = ActiveWorkbook.ActiveSheet.Name ' 'En caso de error On Error GoTo ErrorHandler ' Application.ScreenUpdating = False ' 'Recorremos todas las hojas For Each Hoja In ActiveWorkbook.Sheets ' If Hoja.Visible = True Then ' miRango = Me.RefEdit1.Value ' intPosicion = WorksheetFunction.Find("!", miRango) intLargo = Len(miRango) miRango2 = Right(miRango, intLargo - intPosicion) ' Hoja.Activate Hoja.Range(miRango2).Select ' ActiveWindow.FreezePanes = True ' Else End If ' Next Hoja ' ActiveWorkbook.Sheets(strHojaActual).Activate ' Unload Me ' Application.ScreenUpdating = True ' Exit Sub ' ErrorHandler: Application.ScreenUpdating = True ' MsgBox "Debe elegir un rango válido.", vbExclamation, "EXCELeINFO" ' End Sub ' Private Sub CommandButton2_Click() Unload Me End Sub
Movizar páneles.
Ubicación: Módulo 1.
'--------------------------------------------------------------------------------------- ' Module : Módulo1 ' Author : MVP Excel, Sergio Alejandro Campos ' Date : 28/11/2014 ' Purpose : Movizar páneles en todas las hojas '--------------------------------------------------------------------------------------- ' Option Explicit ' Sub MovilizarPanales() ' 'Declaramos variables Dim strHojaActual As String Dim Hoja As Object ' strHojaActual = ActiveWorkbook.ActiveSheet.Name ' Application.ScreenUpdating = False ' 'Recorremos todas las hojas For Each Hoja In ActiveWorkbook.Sheets ' If Hoja.Visible = True Then ' Hoja.Activate ActiveWindow.FreezePanes = False ' Else End If ' Next Hoja ' ActiveWorkbook.Sheets(strHojaActual).Activate ' Application.ScreenUpdating = True ' End Sub