WD2000: UserForm Tabbing Order Problems Using Frame Controls (238395)



The information in this article applies to:

  • Microsoft Word 2000

This article was previously published under Q238395

SYMPTOMS

When you place a Frame control (in the Visual Basic Editor, on the View menu, click Toolbox) on a Visual Basic for Applications UserForm and then you do the following:
  • Place controls--for example, TextBox controls--inside the Frame control.

    -and-
  • Place controls outside of the Frame control--for example, CommandButton controls.

    -and-
  • Set TabIndex and TabStop property values for each control (for cycling through the controls when pressing TAB).
Several problems may occur as follows:
  1. When you run your macro to show the UserForm, if you have set a control within the Frame control to have focus by setting its TabIndex property to 0 (zero), the control does not gain focus. For example, the insertion point is not within a TextBox control indicating where your user should begin typing.
  2. If you set the TabStop property for the Frame control to False, when you press TAB to cycle through controls on the UserForm, you can only tab between the controls outside of the Frame control.
  3. When you click a control within the Frame control, you can tab through the control(s) within the Frame control; however, after you quit the Frame control (tab to controls outside of the Frame control), you cannot tab back to the control(s) within the Frame control.
  4. Working around the focus problem as described in item 1 by forcing focus using the SetFocus method, for example, TextBox1.SetFocus, in the Activate event of the UserForm, still introduces the tabbing problem as defined in item 3.
  5. Working around the item 2 problem by setting the TabStop property to True for the Frame control does not set the focus to the control you designated as first in the tabbing order. When you press TAB, the control whose TabIndex property is set to 0 is skipped, and focus is set to the control whose TabIndex property is set to 1 (or next in line in the tabbing order).

WORKAROUND

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. To allow tabbing through all controls on a UserForm, regardless of whether they are located in the Frame control or outside of the Frame control, you can set the TabStop property for the Frame control to True. However, you cannot set the control focus to the first control in your TabIndex tab order that is within the Frame control. To work around this problem, you can set focus to another control first and then reset the focus to the control that you want to have the focus when you show your UserForm.

For example, the following Visual Basic for Applications procedure assumes you have a UserForm with a Frame control and at least two Textbox controls within the Frame control. Also, you have two CommandButton controls placed outside of the Frame control.

You have set the following properties for each control:

           Frame   Textbox1   TextBox2   CommandButton1   CommandButton2
TabIndex:    0        0          1            0                1
TabStop:   True     True        True        True             True
				

Place the following commands in the Activate event of your UserForm:
Private Sub UserForm_Activate()
   TextBox2.SetFocus
   TextBox1.SetFocus
End Sub
				
To view the Activate event for your UserForm:
  1. Click to select your UserForm.
  2. On the View menu, click Code.
  3. In the code window, click the Procedure list box to select Activate.

STATUS

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

MORE INFORMATION

For more information about UserForms, in the Visual Basic Editor, click Microsoft Visual Basic Help on the Help menu, type UserForm in the Office Assistant or the Answer Wizard, and then click Search to view the topic.

For more information about the TabStop property, in the Visual Basic Editor, click Microsoft Visual Basic Help on the Help menu, type TabStop property in the Office Assistant or the Answer Wizard, and then click Search to view the topic.

For more information about the TabIndex property, in the Visual Basic Editor, click Microsoft Visual Basic Help on the Help menu, type TabIndex property in the Office Assistant or the Answer Wizard, and then click Search to view the topic.

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

226118 OFF2000: Programming Resources for Visual Basic for Applications


For more information about how to use the sample code in this article, click the article number below to view the article in the Microsoft Knowledge Base:

212536 OFF2000: How to Run Sample Code from Knowledge Base Articles


Modification Type:MajorLast Reviewed:6/17/2005
Keywords:kbbug kbpending KB238395