XL: Macro That Changes Cell Dimensions on Multiple Sheets Doesn't Run As Expected (213823)



The information in this article applies to:

  • Microsoft Excel 2000
  • Microsoft Excel 2002

This article was previously published under Q213823
For a Microsoft Excel 97 and earlier version of this article, see 131164.
For a Microsoft Excel 98 Macintosh Edition version of this article, see 192904.

SYMPTOMS

If you record a macro that changes column widths, changes row heights, or hides and unhides rows or columns while multiple sheets are selected, the macro may not run as expected. In such a case, when you run the macro, only the active sheet in the multiple sheet selection reflects the changes to the column widths and row heights.

WORKAROUND

Microsoft provides programming examples for illustration only, without warranty either expressed or implied, including, but not limited to, the implied warranties of merchantability and/or fitness for a particular purpose. This article assumes that you are familiar with the programming language being demonstrated and the tools used to create and debug procedures. Microsoft support professionals 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 needs. If you have limited programming experience, you may want to contact a Microsoft Certified Partner or the Microsoft fee-based consulting line at (800) 936-5200. For more information about Microsoft Certified Partners, please visit the following Microsoft Web site: For more information about the support options that are available and about how to contact Microsoft, visit the following Microsoft Web site: To work around this issue, modify the recorded macro. To determine which portions of your macro to modify, follow these steps:
  1. On the Tools menu, point to Record Macro, and then click Record New Macro. Click OK.
  2. Press and hold the CTRL key, and then select the sheet tabs for Sheet1 and Sheet2.
  3. Click the Sheet1 tab to switch Sheet1.
  4. Select column A.
  5. To hide column A, point to Column on the Format menu, and then click Hide.

    The recorded macro appears as follows:
    Sub Macro1()
       Sheets(Array("Sheet1", "Sheet2")).Select
       Sheets("Sheet1").Activate
       Columns("A:A").Select
       Selection.EntireColumn.Hidden = True
    End Sub
    					
When you run this macro, column A on Sheet1 is hidden, but column A on Sheet2 remains unhidden. To correct the macro so that column A is hidden on both sheets, modify the macro so that it looks like the following example:
Sub Macro1()

   ' Select Sheet1 and Sheet2 and make Sheet1 the active sheet.

   Sheets(Array("Sheet1", "Sheet2")).Select
   Sheets("Sheet1").Activate

   ' Loop through each sheet in the selected sheets and hide column
   ' A on that sheet.

   For Each Sht In ActiveWindow.SelectedSheets
      Sht.Columns("A:A").Hidden = True
   Next

End Sub
				
If you want to be prompted for the column letter for the column to hide, use the following macro:
Sub Macro1()

   ' Assign column letter to variable.
   colx = InputBox ("Enter a letter for the column to hide")

   ' Select Sheet1 and Sheet2 and make Sheet1 the active sheet.

   Sheets(Array("Sheet1", "Sheet2")).Select
   Sheets("Sheet1").Activate

   ' Loop through each sheet in the selected sheets and hide column
   ' A on that sheet.

   For Each Sht In ActiveWindow.SelectedSheets
      Sht.Columns("" & colx & ":" & colx & "").Hidden = True
   Next

End Sub
				

Modification Type:MajorLast Reviewed:10/8/2003
Keywords:kbdtacode kbmacro kbpending kbprb kbProgramming KB213823