XL2000: Macro Doesn't Function on Multiple Sheets in Group Mode (213431)
The information in this article applies to:
This article was previously published under Q213431 SYMPTOMS
In Microsoft Excel, when you use a Microsoft Visual Basic for Applications
procedure to perform an action while worksheets are selected in group mode,
the action performed may only be performed on one of the worksheets instead
of on every worksheet in the selection.
This behavior may also occur if you use a Visual Basic Standard or
Professional Edition procedure to perform an action while worksheets are
selected in group mode in Microsoft Excel.
For example, if you use a Visual Basic procedure to select multiple
worksheets, and you check spelling in the selected worksheets, if you use
the Change All button to change a word that is found on all of the selected worksheets, the word is only changed on the active worksheet.
CAUSE
This behavior occurs because some of the Visual Basic commands in Microsoft
Excel perform an action on one worksheet at a time, even if the equivalent
menu command performs the action on all selected sheets.
WORKAROUNDMicrosoft 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 behavior, you must loop through each sheet in the
selection individually in your procedure or script to perform the action as
in the following examples. (Note that the following example uses the
Spelling command to demonstrate the workaround. This example can be
modified to work with other commands.)
- Start Excel.
- Ensure that there are at least three worksheets open.
- Type the word Tesst into cell A1 of each worksheet.
- Press SHIFT and then select each worksheet tab to group the worksheets.
- Press ALT+F11 to start the Visual Basic editor.
- On the Insert menu, click Module.
- In the module sheet, type the following code:
Sub SpellCheck()
' Dimension variable x as Object type
Dim x as Object
' Group select Sheet1, Sheet2, and Sheet3 worksheets.
' Note that there are other methods for selecting multiple sheets.
Sheets(Array("sheet1", "sheet2", "sheet3")).Select
' Perform spell check on each selected sheet.
' Note that the Change All button will only change
' words on one worksheet, but the spell checker dialog
' will appear once for each sheet selected.
For Each x In ActiveWindow.SelectedSheets
x.CheckSpelling CustomDictionary:="CUSTOM.DIC", _
IgnoreUpperCase:=False, AlwaysSuggest:=True
Next x
End Sub
- Press ALT+F11 to return to Excel.
- On the Tools menu, point to Macro, and then click Macros.
- In the Macro name list, click SpellCheck, and then click Run.
The spell checker steps through each worksheet.
REFERENCESFor more information about selecting worksheets, click Microsoft Excel Help on the Help menu, type select sheets in a workbook in the Office Assistant or the Answer Wizard, and then click Search to view the topic.
| Modification Type: | Minor | Last Reviewed: | 10/11/2006 |
|---|
| Keywords: | kbdtacode kbinterop kbprb kbProgramming KB213431 |
|---|
|