You are currently offline, waiting for your internet to reconnect

Macro performance slow when page breaks are visible in Excel

Support for Office 2003 has ended

Microsoft ended support for Office 2003 on April 8, 2014. This change has affected your software updates and security options. Learn what this means for you and how to stay protected.

This article was previously published under Q199505
For a Microsoft Excel 97 version of this article, see 145598.
SYMPTOMS
When you run a Microsoft Visual Basic for Applications (VBA) macro in a later version of Microsoft Excel, the macro may take longer to complete than it does in earlier versions of Excel. For example, a macro that required several seconds to complete in an earlier version of Excel may require several minutes to complete in a later version of Excel.

Alternatively, if you run a macro a second time, the macro may take twice as long to run as it did the first time.
CAUSE
This problem may occur if the following conditions are true:
  • The VBA macro modifies the properties of many rows or columns.
  • You have performed an operation that forced Excel to calculate page breaks. Excel calculates page breaks when you perform any of the following operations:
    • You display a print preview of your worksheet.
    • In Microsoft Office Excel 2003 and in earlier versions of Excel, you click Page Setup on the File menu.

      In Microsoft Office Excel 2007, you click Page Setup on the Quick Access Toolbar.

      Note You may have to add this option to the toolbar manually.
    • You modify any of the properties of the PageSetup object in a VBA macro.
  • In Excel 2003 and in earlier versions of Excel, you select the Page breaks check box on the View tab of the Options dialog box.

    In Excel 2007, you click the Microsoft Office Button, click Excel Options, click the Advanced category, and then click to select the Show page breaks check box under the Display options for this worksheet section.
This problem occurs if your macro sets any PageSetup property, or if you manually set a PageSetup property, and then run a VBA macro that sets properties on a large range of rows or columns.

When you set a PageSetup property, automatic calculation of page breaks is enabled in Excel. By default, this property is not set.
WORKAROUND
To work around this issue, use either of the following methods.

Method 1: Manually disable the page breaks display

To do this in Excel 2003 and in earlier versions of Excel, follow these steps:
  1. Click Options on the Tools menu.
  2. Click the View tab. Under Window options, click to clear the Page breaks check box. Click OK.
To do this in Excel 2007, follow these steps:
  1. Click the Microsoft Office Button, and then click Excel Options.
  2. Click the Advanced category, and then click to clear the Show page breaks check box under the Display options for this worksheet section.

Method 2: Disable the page breaks display programmatically

Microsoft provides programming examples for illustration only, without warranty either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure, but they will not modify these examples to provide added functionality or construct procedures to meet your specific requirements.

To disable the page breaks display programmatically, add the following line of code to your VBA macro.
ActiveSheet.DisplayPageBreaks = False				
Important You must insert this line of code after you modify any of the properties of the PageSetup object, but before you modify the properties or the rows on your worksheet.
XL2000 xl2002 XL2003 XL2007
Properties

Article ID: 199505 - Last Review: 01/23/2007 22:14:18 - Revision: 5.1

Microsoft Office Excel 2007, Microsoft Office Excel 2003, Microsoft Excel 2002 Standard Edition, Microsoft Excel 2000 Standard Edition

  • kbdtacode kbprb kbprint KB199505
Feedback
d=1&t=">