Consejo: Otros idiomas son traducidos por Google. Puedes visitar el English versión de este enlace.
Iniciar sesión
x
or
x
x
Suscríbete
x

or

¿Cómo bloquear o congelar la pestaña de la hoja de trabajo en Excel?

Supongamos que tiene un libro de trabajo que contiene varias hojas de cálculo, hay una hoja de cálculo denominada Hoja principal como la primera pestaña del libro de trabajo. Y ahora, desea intentar bloquear o congelar esta pestaña de hoja para que esté siempre visible incluso cuando se desplaza por varias hojas de trabajo. De hecho, no hay una forma directa de congelar la pestaña, pero puede usar una solución alternativa para resolver este problema.

Bloquee o congele una pestaña específica de la hoja de cálculo con el código VBA


Congelar / Descongelar hojas múltiples hojas de trabajo:
Kutools para Excels Congelar / Descongelar paneles múltiples hojas de trabajo puede ayudarlo a congelar o descongelar todas las hojas de trabajo dentro de su libro de trabajo con un solo clic.
doc congelar varias hojas 1

flecha azul burbuja derecha Bloquee o congele una pestaña específica de la hoja de cálculo con el código VBA


En Excel, podemos aplicar el siguiente código VBA para hacer que la hoja de cálculo específica siempre esté antes de la pestaña actual de la hoja de trabajo, de modo que siempre pueda ver esta hoja de trabajo cuando se desplace por las demás pestañas de la hoja. Por favor haz lo siguiente:

1. Mantenga presionado el ALT + F11 llaves, y abre la Ventana de Microsoft Visual Basic para Aplicaciones.

2. Entonces escoge ThisWorkbook desde la izquierda Proyecto Explorer panel, haga doble clic para abrir Módulo, y luego copie y pegue el siguiente código de VBA en el Módulo en blanco:

Código de VBA: congele o bloquee una pestaña específica de la hoja de trabajo

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
'Update 20150306
Application.EnableEvents = False
Application.ScreenUpdating = False
If Application.ActiveSheet.Index <> Application.Sheets("Main-sheet").Index Then
    Application.Sheets("Main-sheet").Move Before:=Application.Sheets(Application.ActiveSheet.Index)
    Application.Sheets("Main-sheet").Activate
    Sh.Activate
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub

doc-freeze-sheet-tab-1

3. Y luego guarde y cierre este código; ahora, cuando hace clic en cualquiera de las pestañas de su hoja de cálculo, esta hoja de trabajo específica estará siempre en la parte delantera de la pestaña de la hoja en la que hizo clic, consulte las capturas de pantalla:

doc-freeze-sheet-tab-2
-1
doc-freeze-sheet-tab-3

Nota: En el código anterior, la hoja principal es el nombre de la hoja que desea congelar, puede cambiarla según sus necesidades.


Artículos relacionados:

Cómo congelar paneles en Excel 2010?

¿Cómo aplicar paneles de congelación / descongelación a varias hojas de trabajo a la vez?


Kutools for Excel: la mejor herramienta de productividad de Office aumenta su productividad en un 80%

  • Super Formula Bar (edite fácilmente varias líneas de texto y fórmula); Diseño de lectura (lee y edita fácilmente un gran número de celdas); Pegar en rango filtrado...
  • Combinar celdas / filas / columnas y mantener datos; Contenido de celdas divididas; Combinar filas duplicadas y suma / promedio... Prevenir células duplicadas; Comparar rangos...
  • Seleccione Duplicado o Único Filas; Seleccionar filas en blanco (todas las celdas están vacías); Super Find y Fuzzy Find en muchos libros de trabajo; Selección aleatoria ...
  • Copia exacta Celdas múltiples sin cambiar la referencia de fórmula; Crear referencias automáticamente a múltiples hojas; Insertar viñetas, Casillas de verificación y más ...
  • Fórmulas favoritas e insertadas rápidamente, Gamas, cuadros y cuadros; Cifrar celdas con contraseña Crear una lista de correo y enviar correos electrónicos ...
  • Extracto del texto, Agregar texto, Eliminar por posición, Eliminar espacio; Crear e imprimir subtotales de paginación; Convertir entre contenido de celdas y comentarios...
  • Súper filtro (guardar y aplicar esquemas de filtro a otras hojas); Clasificación avanzada por mes / semana / día, frecuencia y más; Filtro especial por negrita, cursiva ...
  • Combinar libros de trabajo y hojas de trabajo; Combinar tablas basadas en columnas clave; Dividir datos en varias hojas; Conversión por lotes xls, xlsx y PDF...
  • Funciona con Office 2007-2019 y 365, y es compatible con todos los idiomas. Es fácil de implementar en su empresa. Funciones completas de prueba gratuita de 60-day.
pestaña kte 201905

Office Tab lleva la interfaz con pestañas a Office y hace que su trabajo sea mucho más fácil

  • Habilitar la edición y lectura con pestañas en Word, Excel, PowerPoint, Editor, Acceso, Visio y Proyecto.
  • Abra y cree varios documentos en nuevas pestañas de la misma ventana, en lugar de en nuevas ventanas.
  • ¡Aumenta tu productividad en un 50% y reduce cientos de clics de ratón por ti todos los días!
fondo officetab
Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Xuan · 11 months ago
    chăng đc gi cả
  • To post as a guest, your comment is unpublished.
    Jesse · 1 years ago
    As Thuyen pointed out 2 years ago, you can't copy data between sheets while this code is active. Furthermore, the code is needlessly complicated. The sheet that you activate is passed to the procedure as the parameter "Sh". This makes the frequent calls to "ActiveSheet" unnecessary, and could cause problems for someone who's trying to modify the code but isn't very experienced.

    Here's my versions that corrects those issues, and even shows how to add a 2nd "Main" sheet (similar to what Dzingai posted):
    -----------------------------------------------------------------

    'These 2 lines aren't necessary if you use the sheets' codenames, which I recommend.
    Set shtMain1 = Worksheets("Main-Sheet-1")
    Set shtMain2 = Worksheets("Main-Sheet-2")

    If Application.CutCopyMode = False Then
    If Sh.Index <> shtMain1.Index And Sh.Index <> shtMain2.Index Then
    shtMain1.Move before:=Sh
    shtMain2.Move before:=Sh
    Sh.Activate
    End If
    End If
  • To post as a guest, your comment is unpublished.
    Sangs · 2 years ago
    This code worked well. Only problem is...if we close the file & open it again it goes off.
    • To post as a guest, your comment is unpublished.
      Dzingai · 2 years ago
      [quote name="Sangs"]This code worked well. Only problem is...if we close the file & open it again it goes off.[/quote]
      Try saving document as Macro-Enabled Workbook. I think it should work well that way.
  • To post as a guest, your comment is unpublished.
    Pablo · 3 years ago
    Is it possible to create one with multiple arguments? Like instead of just moving the one main sheet to the front of where you are working, is it possible to move three tabs in front of what you are working on?
    • To post as a guest, your comment is unpublished.
      dzingai · 2 years ago
      Yes, it is possible, you just have to add more arguments to the if clause using the "AND" like this

      IF Application.ActiveSheet.Index Application.Sheets("Main-sheet").Index AND Application.ActiveSheet.Index Application.Sheets("Other-Main-sheet").Index and so on...
      Then
      Application.Sheets("Main-sheet").Move Before:=Application.Sheets(Application.Sheets("Other-Main-sheet").Index)
      Application.Sheets("Main-sheet").Activate
      Application.Sheets("Other-Main-sheet").Move Before:=Application.Sheets(Application.ActiveSheet.Index)
      Application.Sheets("Other-Main-sheet").Activate
      Sh.Activate
      This will place the Main-Sheet, then the Other-Main-Sheet in front of your active sheet.
  • To post as a guest, your comment is unpublished.
    MEESHA · 3 years ago
    Could not get your code to work, but this one did :)

    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Dim sc As Long ' count of sheets
    Dim NewPos As Long ' index of serlected sheet

    Application.EnableEvents = False
    Application.ScreenUpdating = False

    If ActiveSheet.Index 1 Then
    sc = Sheets.Count
    NewPos = ActiveSheet.Index
    For i = 2 To NewPos - 1
    Sheets(2).Move After:=Sheets(sc)
    Next i
    Sheets(1).Activate
    Sheets(2).Activate
    End If

    Application.ScreenUpdating = True
    Application.EnableEvents = True
    End Sub
  • To post as a guest, your comment is unpublished.
    Thuyen · 3 years ago
    When I use VBA, I cannot copy data from Main-Sheet to another sheet
    Please help me fix this bug