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.

image

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.

image

Figura 2. Inmovilizando páneles en Excel con formulario vba

En Figura 3 vemos el formulario en acción.

Inmovilizar páneles en Excel

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

Anexos

:: Descarga Inmovilizar páneles en todas las hojas.rar

You may also like...