Les galetes ens ajuden a lliurar els nostres serveis. En utilitzar els nostres serveis, accepteu el nostre ús de cookies.
Consell: altres idiomes es tradueixen en Google. Pots visitar el English versió d'aquest enllaç.
Iniciar Sessió
x
or
x
x
Registre
x

or

Com bloquejar o congelar la fitxa del full de càlcul a Excel?

Si teniu un quadern de treball que conté diverses fulls de treball, hi ha un full de càlcul anomenat Main-sheet com a primera pestanya del llibre. I ara, voleu provar de bloquejar o congelar aquesta pestanya de full per fer-la visible fins i tot quan es desplaci a través d'una sèrie de fulls de treball. De fet, no hi ha manera directa de congelar la pestanya, però podeu utilitzar una solució alternativa per fer front a aquest problema.

Bloqueja o congela una pestanya específica del full de treball amb codi VBA


Làmines de congelació / desbloqueig múltiples fulls de treball:
Kutools for Excel 's Làmines de congelació / desbloqueig múltiples fulls de treball us pot ajudar a congelar o desbloquejar totes les fitxes del vostre llibre amb un sol clic.
doc congelar fulls múltiples 1

fletxa blau dreta bombolla Bloqueja o congela una pestanya específica del full de treball amb codi VBA


En Excel, podem aplicar el següent codi VBA per fer el full de treball específic sempre abans de la pestanya del full de càlcul actual, de manera que sempre pugui veure aquest full de treball quan es desplaceu cap a qualsevol altra pestanya del full. Feu el següent:

1. Mantingueu premut el botó ALT + F11 tecles i obre el Finestra de Microsoft Visual Basic per a aplicacions.

2. A continuació, trieu ThisWorkbook des de l'esquerra Explorador de projectes panell, feu doble clic per obrir la finestra Mòduls, i després copieu i enganxeu el codi VBA següent al Mòdul en blanc:

Codi VBA: congelar o bloquejar una pestanya específica del full de treball

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. A continuació, deseu i tanqueu aquest codi, ara, quan feu clic a qualsevol de les pestanyes del vostre full de càlcul, aquest full de treball específic estarà sempre al capdavant de la fitxa del full clicat, vegeu captures de pantalla:

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

Nota: En el codi anterior, el full principal és el nom del full que voleu congelar, podeu canviar-lo a la vostra necessitat.


Articles relacionats:

Com bloquejar els panells en Excel 2010?

Com aplicar els panificis de congelació / desbloqueig a diversos fulls de treball alhora?



Eines de productivitat recomanades

Pestanya d'Office

estrella d&#39;or1 Porteu les pestanyes pràctiques a l'Excel i a un altre programari d'Office, igual que Chrome, Firefox i el nou Internet Explorer.

Kutools for Excel

estrella d&#39;or1 Increïble! Incrementeu la productivitat en 5 minuts. No necessites cap habilitat especial, estalvieu dues hores cada dia.

estrella d&#39;or1 300 Noves característiques per a Excel, Excel molt fàcil i potent:

  • Combina cel·les / files / columnes sense perdre dades.
  • Combina i consolida diverses fulles i llibres.
  • Comparar intervals, copiar diversos rangs, convertir text a data, unitat i conversió de divises.
  • Compte per colors, subtotals de paginació, classificació avançada i filtre súper,
  • Més Seleccioneu / Insereix / Suprimeix / Text / Format / Enllaç / Comentari / Llibres / Eines de full de càlcul ...

Tret de pantalla de Kutools per a Excel

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 · 5 months ago
    chăng đc gi cả
  • To post as a guest, your comment is unpublished.
    Jesse · 8 months 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 · 1 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 · 1 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 · 2 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 · 1 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 · 2 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