VBA: Invalid Page Fault with More Than 411 Controls in UserForm

Last reviewed: February 27, 1998
Article ID: Q177842
The information in this article applies to:
  • Microsoft Visual Basic for Applications version 5.0
  • Microsoft Excel 97 for Windows
  • Microsoft Word 97 for Windows
  • Microsoft PowerPoint 97 for Windows

SYMPTOMS

When a UserForm has more than 411 controls and any controls added after the 411th are addressed directly by name in a Microsoft Visual Basic for Applications macro or procedure (for example, UserForm1.Label412), you receive one of the following error messages.

In Microsoft Windows 95

   This program has performed an illegal operation and will be shut down.
   If the problem persists, contact the program vendor.

If you click Details, you receive an error message similar to the following:

   EXCEL caused an invalid page fault in module <unknown> at 0000:00000000.

   -or-

   WINWORD caused an invalid page fault in module <unknown> at
   0000:00000000.

In Microsoft Powerpoint, you receive the following error message:

    PowerPoint found an error that it can't correct. You should save
    presentations, exit, and then restart PowerPoint.

In Microsoft Windows NT

   Dr. Watson for Windows NT

   An Application error has occurred and an application log is being
   generated.

   EXCEL.exe
   Exception: Access violation (0xc0000005), Address: 0x00000000

  -or-

   WINWORD.exe
   Exception: Access violation (0xc0000005), Address: 0x00000000

CAUSE

This behavior occurs when the following conditions are true:

  • More than 411 controls of any type are created on a UserForm.

        -and-
    
  • Controls created after the 411th are addressed directly by name (such as UserForm1.Label412) in a Visual Basic macro or procedure.

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 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 needs. If you have limited programming experience, you may want to contact the Microsoft fee-based consulting line at (800) 936-5200. For more information about the support options available from Microsoft, please see the following page on the World Wide Web:

   http://www.microsoft.com/support/supportnet/refguide/default.asp

Controls beyond the 411th control must be addressed as a member of the Controls collection instead of addressed by name directly. You can use one of the following methods to work around the problem.

Method 1: Using a For Each...Next Statement

Refer to the desired control using the Controls collection and a For Each...Next statement. The following sample Sub procedure demonstrates this method:

   Sub Change_Caption()
      For each myControl in UserForm1.Controls
         x = x + 1
         myControl.Caption = x
      Next
   End Sub

Method 2: Using the Item Method

Use the Item method with the index number as the following sample Visual Basic statements demonstrate:

   UserForm1.Controls.Item(411).Caption = "joe"

   -or-

   UserForm1.Controls(411).Caption = "joe"

   -or-

   UserForm1.Controls("Label411").Caption = "joe"

NOTE: The index starts at 0.

STATUS

Microsoft has confirmed this to be a problem in the products listed above. We are researching this problem and will post new information here in the Microsoft Knowledge Base as it becomes available.

MORE INFORMATION

Deleting a control with a TabIndex property number less than 411 allows the next named control above the previous 410 to be addressed without error, but the error then occurs on the control that becomes the 411th after the deletion. Changing the TabOrder property or TabIndex property number of a control does not change the behavior; the behavior seems to be entirely determined by the order in which the controls were created.

REFERENCES

For additional information about getting help with Visual Basic for Applications, please see the following article in the Microsoft Knowledge Base:

   ARTICLE-ID: Q163435
   TITLE     : VBA: Programming Resources for Visual Basic for
               Applications


Additional query words: XL97 8.0 form custom dialog box vbe
Keywords : kbcode kbprg OffVBA
Version : WINDOWS:97
Platform : WINDOWS
Issue type : kbbug
Solution Type : kbworkaround


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: February 27, 1998
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.