ct4242
ct4242

Reputation: 27

TabIndex is working incorrectly

The Goal:

When I switch pages in my VBA userform, I would like a certain field to be the first input value. And then I want them to switch sequentially when I tab through them.

What I have done so far:

The pages are created (for the most part, they still need an artistic mind to make it look like an engineer didn't do it), the logic is made, basically everything is done. The input fields tabIndex propertys are set starting at 20 and going up to 27 in the order I want them in. Pictures will be attached below.

The Problem:

When I push the next button, the userform automatically goes to the "Cooling system" drop down. If I push tab, it goes to the next dropdown. Then through the other options in a strange but constant order. And the weird thing is, I can type but no text appears. The cursor moves, but nothing comes behind it. After I have tabbed through everything, if I push tab again only THEN does it do what I want it to do. I have attached pictures and the code for the next button. Thanks for your help in advanced. Let me know if I can clarify anything!

The Page that works fine: The page that works fine

The problem page (I tried to show how nothing shows when you type and it goes to that drop down automatically): enter image description here

Code for "Next" button:

Private Sub bNextSystem1_Click() 'checks to see if all parameters are entered

If IsNumeric(Me.txtS1elec.value) = True And IsNumeric(Me.txtS1NG.value) = True And IsNumeric(Me.txtS1sqft.value) = True Then

    If Me.txtS1elec.value <> "" And Me.txtS1NG.value <> "" And Me.txtS1sqft.value <> "" And Me.ddS1Cooling.ListIndex > -1 And Me.ddS1Heating.ListIndex > -1 Then

        NextPage
        Me.txtS1elec.BackColor = vbWhite
        Me.txtS1NG.BackColor = vbWhite
        Me.txtS1sqft.BackColor = vbWhite

    Else

        MsgBox "Please check to see if all options are selected or entered."
        GoTo CleanFail

    End If

Else

    HighlightBadCells1 'checks for incorrect cell input values
    MsgBox "Please check the highlighted cells"
    GoTo CleanFail

End If

Me.txtS2elec.value = Me.txtS1elec.value
Me.txtS2NG.value = Me.txtS1NG.value

CleanFail:
End Sub

Code for "NextPage" Sub routine:

 Private Sub NextPage()

MultiPage1.Pages(MultiPage1.value + 1).Visible = True 'hides current page
MultiPage1.Pages(MultiPage1.value).Visible = False 'reveals next page

End Sub

Upvotes: 0

Views: 2556

Answers (1)

user6432984
user6432984

Reputation:

  • Select the Multipage Page
  • CLick View -> Tab Oder

This will show the Tab Order Dialog.

enter image description here

Upvotes: 4

Related Questions