If Cindy freezes panes in a worksheet and then saves the workbook, the next time she opens that workbook the previously frozen panes no longer appear. Each time she opens the workbook, she needs to reset the panes. Cindy doesn't think it used to be this way in older versions of Excel and wonders if there is some setting she needs to make or wonders, perhaps, if Excel has changed how it handles panes. She wants to save the pane settings with the workbook so they persist from one usage to another.
The default behavior of the latest versions of Excel is that your pane settings should be persistent, just as Cindy remembers in older versions of Excel. If that is apparently not happening for you, there are a few things you can check:
If none of those ring a bell with you, try starting with a brand new, blank workbook. Put some test data in it, freeze the panes, and then save it. Exit Excel and open the workbook again. If the panes are still there, then this is a good sign that the problem is with the other workbook only. In that case, it could be that the workbook is becoming corrupted (for some reason) and you may need to work on getting your data into a different workbook.
There are two other things you can do, if you desire. One is to simply save a custom view of your worksheet, with the panes in place. You should then be able to load the custom view at a later time and have the pane settings be present (along with many other settings) so that you can continue working with the workbook.
The other thing you could try is to create your own macro that sets the panes as you want them to appear. Here's an example:
Private Sub Workbook_Open() Sheets("Sheet1").Range("D4").Select ActiveWindow.FreezePanes = True End Sub
This macro would be added to the ThisWorkbook module, and you'll need to change the cell reference (D4) and worksheet name (Sheet1) to reflect where you want the panes set. You could also, if desired, change the code to a "regular" macro that could be assigned to a shortcut key or the Quick Access Toolbar. That way you could use the macro to set similar panes in any worksheet, with the click of a button.
Sub SetPanes() ActiveSheet.Range("D4").Select ActiveWindow.FreezePanes = True End Sub
ExcelTips is your source for cost-effective Microsoft Excel training. This tip (604) applies to Microsoft Excel 2007, 2010, 2013, and 2016.
Save Time and Supercharge Excel! Automate virtually any routine task and save yourself hours, days, maybe even weeks. Then, learn how to make Excel do things you thought were simply impossible! Mastering advanced Excel macros has never been easier. Check out Excel 2010 VBA and Macros today!
Need to find out how good you are with Excel? Here are some places you can check out to quiz yourself.
Discover MoreNeed to test your formulas? Then you need some testing data that you can use to see if the formulas function as you ...
Discover MoreExcel displays, by default, a row label or heading at the left side of each row on the screen. As you scroll down the ...
Discover MoreFREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."
2017-04-23 15:58:23
CACody
Christian,
I don't know of a way to freeze panes on a worksheet without selecting (activating) first. After all, FreezePanes is purely visual so there would be no reason to freeze the panes until it is to be viewed. Your comment about selecting Range("A1") is a good one, except you should select Range("A1") AFTER selecting (and freezing the panes) Range("D4") if you want the cursor to end up on A1. With your code, the cursor ends up on the last selected cell - D4 - and you'll still see the first 4 rows and columns in the active window.
Also note that Allen's code above in the Workbook_Open module --
Sheets("Sheet1").Range("D4").Select
ActiveWindow.FreezePanes = True
will only work if the workbook opens on Sheet1. As you know the workbook will open to whatever worksheet had the active window when last saved. So, if you were on Sheet2, saved and closed the file, then reopened it you would get a range select error code '1004'. You would need to separate the worksheet select and range select into two separate actions.
Sheets("Sheet1").Select
Range("D4").Select
If you want to freeze the panes of a worksheet during the Workbook_Open event without ending up on that worksheet, the following code will work. Basically, it sets the active worksheet during open to a variable (OpenSht), selects and freezes the panes for the desired worksheet (in this case Sheet2), then activates the original active worksheet. We use the Application.ScreenUpdating = False to perform this in the background.
Private Sub Workbook_Open()
Dim OpenSht As Worksheet
Application.ScreenUpdating = False
Set OpenSht = ActiveSheet
Sheets("Sheet2").Select
Range("D4").Select
ActiveWindow.FreezePanes = True
Range("A1").Select
OpenSht.Activate
Range("A1").Select
Application.ScreenUpdating = True
End Sub
Hope this helps.
2017-04-23 03:58:39
Christian Sommerhuber
I have a small comment on your solution: It may happen that the window is scrolled and - in your example - the row 4 and/or the column D is the first one currently displayed. If the real intent is to always show the first 4 rows and columns you should add an extra statement as shown below:
Sub SetPanes()
ActiveSheet.Range("A1").Select ' make sure the top cell is displayed
ActiveSheet.Range("D4").Select
ActiveWindow.FreezePanes = True
End Sub
By the way: is there an alternative of setting the freeze zone without activating the sheet?
Best regards,
Christian
Got a version of Excel that uses the ribbon interface (Excel 2007 or later)? This site is for you! If you use an earlier version of Excel, visit our ExcelTips site focusing on the menu interface.
FREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."
Copyright © 2018 Sharon Parq Associates, Inc.
Comments