Microsoft KB Archive/157313

= XL97: Unable to Show UserForms in Other Projects =

Article ID: 157313

Article Last Modified on 10/11/2006

-

APPLIES TO


 * Microsoft Excel 97 Standard Edition

-



This article was previously published under Q157313





SYMPTOMS
There is no way to directly show a UserForm that is contained in another Microsoft Visual Basic for Applications project.



RESOLUTION
If you want to show a UserForm that is contained in another project you must either:
 * Import the UserForm from the other project.

-or-


 * Reference the other project and call a subroutine (which shows the UserForm) in the other project.

Importing a UserForm from Another Project

 * 1) In the Project Explorer window, select the project containing the UserForm that you want to export.
 * 2) In the Project Explorer window, select the UserForm you are going to export.
 * 3) If the name of your UserForm is the same as that of any UserForm in the project that is going to import your UserForm, change the name of your UserForm to something unique.
 * 4) On the File menu, click Export File.
 * 5) In the Export File dialog box, select a destination folder for the .frm file; give your file a name, and then click Save.
 * 6) In the Project Explorer window, select the project that is going to import the UserForm you saved in step 5.
 * 7) On the File menu, click Import File.
 * 8) Locate and select the file you saved in step 5, then click Open.

Now that the UserForm is part of the project, you are able to show it without error.

NOTE: If you want any macro code that is associated with the UserForm to also be imported with the UserForm, make sure this code is contained on the UserForm's code module and not simply on a module sheet inserted into the project.

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.

Referencing Another Project
In this example, the two projects in question are VBAProject1 and VBAProject2. VBAProject1 is the project that contains your macro code from which you want to display the UserForm in VBAProject2. With this workaround, both UserForms can have the same name because the .Show method always shows the UserForm in the current project.

NOTE: In order to create a reference from VBAProject1 to VBAProject2, the file containing VBAProject2 must be a saved workbook.  Make sure the names of each of the two projects in question are different (as shown in the Properties window for each project). In the Project Explorer window, select VBAProject1. On the Tools menu, click References. In the References - VBAProject1 dialog box, click the check box for VBAProject2 and then click OK.  In a module sheet in VBAProject1, type the following code: Sub Test1 Test2 'call the subroutine in VBAProject2 End Sub   In a module sheet in VBAProject2, type the following code: Sub Test2 UserForm1.Show End Sub </li> Run the "Test1" macro in VBAProject1.</li></ol>

The UserForm in VBAProject2 is displayed.

<div class="status_section">

STATUS
Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article.

<div class="references_section">