XL98: Problems When you use Macro to Add Control to User Form

ID: Q190188

The information in this article applies to:

SYMPTOMS

In Microsoft Excel 98 Macintosh Edition, you may have difficulty adding a control to a user form programmatically. For example, if you run the following macro code

   Sub Add_Control_Test()

       Set y = UserForm1.Controls.Add("Forms.CheckBox.1","MyControl",true)

   End Sub

you will not receive an error, but the checkbox control is not added to the user form.

CAUSE

The macro described in the "Symptoms" section will not add the control to the user form, because the Add method is used during run time. That means that you have to include this macro code in an event procedure tied to the user form.

RESOLUTION

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 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/

If you want use the macro described in the "Symptoms" section to add a check box control to a user form during run time, do the following:

1. Open a new Microsoft Excel workbook, and start the Visual Basic Editor

   by pressing OPTION+F11.

2. On the Insert menu, click UserForm.

3. With the user form active, click Code on the View menu.

4. In the UserForm1(Code) window, click the Procedure list (upper right

   list) and select Initialize.

   NOTE: The insertion point will now be blinking in the middle of a
   UserForm_Initialize() subroutine.

5. Add code to this subroutine so that it resembles the following:

   Private Sub UserForm_Initialize()

       Set y = UserForm1.Controls.Add("Forms.CheckBox.1","MyControl",True)

   End Sub

   To verify that the check box control called "MyControl" was added during
   run time, add another on event procedure to the user form.

6. In the UserForm1(Code) window, click the Procedure list (upper right
   list) and select AddControl.

7. Add code to this subroutine so that it resembles the following:

      Private Sub UserForm_AddControl(ByVal Control As MSForms.Control)

         UserForm1.Controls(CheckBox1).Caption = "test"

      End Sub

8. To activate the user form, click the user form window.

9. To run the user form, press F5.

At run time, The user form will be displayed with a single check box (the caption on this check box will be "test").

NOTE: When you dismiss the user form, the check box will not remain on the user form.

NOTE: The following steps use the project you created in the previous procedure.

To programmatically add a control to a user form so that it becomes part of the user form, you must add it during design time. To do this, follow these steps:

1. On the Insert menu, click Module to add a module sheet to the project.

2. In the new module sheet, enter the following code:

      Sub Design_time_control()

          Set x = Application.VBE.ActiveVBProject.VBComponents. _
              Item("UserForm1").Designer. _
              Controls.Add("Forms.CheckBox.1", "MyCheckbox", True)

          x.Caption = "test"

      End Sub

3. Place the insertion point within the code that you typed in step 2.

4. To run the macro, press F5.

Your user form will have a check box added to it and the caption on the check box will be "test".

STATUS

Microsoft has confirmed this to be a problem in Microsoft Excel 98 Macintosh Edition.

REFERENCES

For more information about programmatically adding controls to user forms, follow these steps:

1. Insert a user form into your project.

2. On the View menu, click Code.

3. In the UserForm(code) window, on a blank line type "Add" (without

   quotation marks).

4. Select the word "Add" that you typed in step 3 and press F1.

The Add Method screen of the Microsoft Forms Reference will be displayed.

Additional query words: XL97 vbe vba

Keywords          : kbprg xlvbahowto xlvbainfo 
Version           : MACINTOSH:98
Platform          : MACINTOSH
Issue type        : kbhowto

Last Reviewed: May 17, 1999