Tip: Other languages are Google-Translated. You can visit the English version of this link.
Log in


How to lock or freeze worksheet tab in Excel?

Supposing you have a workbook which contains multiple worksheets, there is a worksheet named Main-sheet as the first tab in the workbook. And now, you want to try to lock or freeze this sheet tab to make it always visible even when scrolling across a number of worksheets. In fact, there is no direct way for you freeze the tab, but, you can use a workaround to deal with this problem.

Lock or freeze a specific worksheet tab with VBA code

Freeze / Unfreeze panes multiple worksheets:
Kutools for Excel’s Freeze / Unfreeze panes multiple worksheets can help you freeze or unfreeze all worksheets within your workbook with one click.
doc freeze multiple sheets 1

arrow blue right bubble Lock or freeze a specific worksheet tab with VBA code

In Excel, we can apply the following VBA code to make the specific worksheet always before your current clicked worksheet tab, so that you can always see this worksheet when you scroll across any other sheet tabs. Please do as follows:

1. Hold down the ALT + F11 keys, and it opens the Microsoft Visual Basic for Applications window.

2. Then choose ThisWorkbook from the left Project Explorer pane, double click it to open the Module, and then copy and paste following VBA code into the blank Module:

VBA code: Freeze or lock a specific worksheet tab

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)
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub


3. And then save and close this code, now, when you click any of your worksheet tab, this specific worksheet will be always at the front of your clicked sheet tab, see screenshots:


Note: In the above code, the Main-sheet is the sheet name that you want to freeze, you can change it to your need.

Related articles:

How to Freeze Panes in Excel 2010?

How to apply freeze / unfreeze panes to multiple worksheets at once?

Excel Productivity Tools

Ribbon of Excel (with Kutools for Excel installed)

300+ Advanced Features Increase Your Productivity by 70%, and Help You To Stand Out From Crowd!

Would you like to complete your daily work quickly and perfectly? Kutools For Excel brings 300+ cool and powerful advanced features (Combine workbooks, sum by color, split cell contents, convert date, and so on...) for 1500+ work scenarios, helps you solve 80% Excel problems.

  • Deal with all complicated tasks in seconds, help to enhance your work ability, get success from the fierce competition, and never worry about being fired.
  • Save a lot of work time, leave much time for you to love and care the family and enjoy a comfortable life now.
  • Reduce thousands of keyboard and mouse clicks every day, relieve your tired eyes and hands, and give you a healthy body.
  • Become an Excel expert in 3 minutes, and get admiring glance from your colleagues or friends.
  • No longer need to remember any painful formulas and VBA codes, have a relaxing and pleasant mind, give you a thrill you've never had before.
  • Spend only $39, but worth than $4000 training of others. Being used by 110,000 elites and 300+ well-known companies.
  • 60-day unlimited free trial. 60-day money back guarantee. Free upgrade and support for 2 years. Buy once, use forever.
  • Change the way you work now, and give you a better life immediately!

Office Tab Brings Efficient And Handy Tabs to Office (include Excel), Just Like Chrome, Firefox, And New IE

  • Increases your productivity by 50% when viewing and editing multiple documents.
  • Reduce hundreds of mouse clicks for you every day, say goodbye to mouse hand.
  • Open and create documents in new tabs of same window, rather than in new windows.
  • Help you work faster and easily stand out from the crowd! One second to switch between dozens of open documents!
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 · 9 months ago
    chăng đc gi cả
  • To post as a guest, your comment is unpublished.
    Jesse · 11 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
    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...
      Application.Sheets("Main-sheet").Move Before:=Application.Sheets(Application.Sheets("Other-Main-sheet").Index)
      Application.Sheets("Other-Main-sheet").Move Before:=Application.Sheets(Application.ActiveSheet.Index)
      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
    End If

    Application.ScreenUpdating = True
    Application.EnableEvents = True
    End Sub