[RESOLVED] Userform: Letting a user click on a listbox item after a multipage has been clicked.
I have a userform that has three multipage tabs with one listbox per page (also an OK button and a cancel button). I want to let the user click on the one of the multipage tabs and then choose an item from listbox. What actually happens is when I choose the multipage it calls the listbox but doesn't allow the user to choose a listbox item before finishing the execution. What do I need to do is allow the form to wait until the user chooses an item from the listbox before the finishing the execution. The Code is below. Any help would be greatly appreciated.
Code:
Private Sub CancelButton_Click()
strDCodePathFolder = ""
Me.Tag = 1
Me.Hide
End Sub
Private Sub ListDCodeXYZ_Click()
Select Case ListDCodeXYZ.ListIndex
Case 0: strDCodePathFolder = Sheets("DCode Pivot").Range("A5")
Case 1: strDCodePathFolder = Sheets("DCode Pivot").Range("A6")
Case 2: strDCodePathFolder = Sheets("DCode Pivot").Range("A7")
Case 3: strDCodePathFolder = Sheets("DCode Pivot").Range("A8")
Case 4: strDCodePathFolder = Sheets("DCode Pivot").Range("A9")
Case 5: strDCodePathFolder = Sheets("DCode Pivot").Range("A10")
Case 6: strDCodePathFolder = Sheets("DCode Pivot").Range("A11")
Case 7: strDCodePathFolder = Sheets("DCode Pivot").Range("A12")
Case 8: strDCodePathFolder = Sheets("DCode Pivot").Range("A13")
Case 9: strDCodePathFolder = Sheets("DCode Pivot").Range("A14")
Case 10: strDCodePathFolder = Sheets("DCode Pivot").Range("A15")
Case 11: strDCodePathFolder = Sheets("DCode Pivot").Range("A16")
Case Else: MsgBox "No Entry Selected"
End Select
End Sub
Private Sub ListDCodeDEF_Click()
Select Case ListDCodeDEF.ListIndex
Case 0: strDCodePathFolder = Sheets("DCode Pivot").Range("A5")
Case 1: strDCodePathFolder = Sheets("DCode Pivot").Range("A6")
Case 2: strDCodePathFolder = Sheets("DCode Pivot").Range("A7")
Case 3: strDCodePathFolder = Sheets("DCode Pivot").Range("A8")
Case 4: strDCodePathFolder = Sheets("DCode Pivot").Range("A9")
Case 5: strDCodePathFolder = Sheets("DCode Pivot").Range("A10")
Case 6: strDCodePathFolder = Sheets("DCode Pivot").Range("A11")
Case 7: strDCodePathFolder = Sheets("DCode Pivot").Range("A12")
Case 8: strDCodePathFolder = Sheets("DCode Pivot").Range("A13")
Case 9: strDCodePathFolder = Sheets("DCode Pivot").Range("A14")
Case 10: strDCodePathFolder = Sheets("DCode Pivot").Range("A15")
Case Else: MsgBox "No Entry Selected"
End Select
End Sub
Private Sub ListDCodeABC_Click()
Select Case ListDCodeABC.ListIndex
Case 0: strDCodePathFolder = Sheets("DCode Pivot").Range("A5")
Case 1: strDCodePathFolder = Sheets("DCode Pivot").Range("A6")
Case 2: strDCodePathFolder = Sheets("DCode Pivot").Range("A7")
Case 3: strDCodePathFolder = Sheets("DCode Pivot").Range("A8")
Case 4: strDCodePathFolder = Sheets("DCode Pivot").Range("A9")
Case 5: strDCodePathFolder = Sheets("DCode Pivot").Range("A10")
Case 6: strDCodePathFolder = Sheets("DCode Pivot").Range("A11")
Case 7: strDCodePathFolder = Sheets("DCode Pivot").Range("A12")
Case 8: strDCodePathFolder = Sheets("DCode Pivot").Range("A13")
Case 9: strDCodePathFolder = Sheets("DCode Pivot").Range("A14")
Case 10: strDCodePathFolder = Sheets("DCode Pivot").Range("A15")
Case 11: strDCodePathFolder = Sheets("DCode Pivot").Range("A16")
Case Else: MsgBox "No Entry Selected"
End Select
End Sub
Private Sub MultiPage1_Change()
Dim i As Integer
Select Case MultiPage1.Value
Case 0
Sheets("DCode Pivot").PivotTables("PivotTable1").PivotFields("Plant").ClearAllFilters
Sheets("DCode Pivot").PivotTables("PivotTable1").PivotFields("Plant").CurrentPage = "XYZ"
Call ListDCodeXYZ_Click
Case 1
Sheets("DCode Pivot").PivotTables("PivotTable1").PivotFields("Plant").ClearAllFilters
Sheets("DCode Pivot").PivotTables("PivotTable1").PivotFields("Plant").CurrentPage = "DEF"
Call ListDCodeDEF_Click
Case 2
Sheets("DCode Pivot").PivotTables("PivotTable1").PivotFields("Plant").ClearAllFilters
Sheets("DCode Pivot").PivotTables("PivotTable1").PivotFields("Plant").CurrentPage = "ABC"
Call ListDCodeABC_Click
End Select
End Sub
Private Sub OKButton_Click()
Me.Tag = 0
Me.Hide
End Sub
Re: Userform: Letting a user click on a listbox item after a multipage has been click
Thread moved to 'Office Development/VBA' forum (note that the "VB Editor" in Office programs is actually VBA rather than VB, so the 'VB6' forum is not really apt)
Re: Userform: Letting a user click on a listbox item after a multipage has been click
Why are you calling the click event in MultiPage1_Change() ? :confused:
Let it happen automatically when the user selects and item in the listbox?
Re: Userform: Letting a user click on a listbox item after a multipage has been click
What would be the alternative? The reason I used MultiPage1_Change() was because that was what the default was when I clicked view code on the multipage tab. If this is incorrect, and there is a better way, I am always open to suggestions.
Re: Userform: Letting a user click on a listbox item after a multipage has been click
Just remove the click events from the MultiPage1_Change()... The listbox click event will fire automatically when the user clicks the listbox...
Re: Userform: Letting a user click on a listbox item after a multipage has been click
But there are 3 listboxes (1 per tab, with each list having a different rowsource). I tried using buttons that would change the rowsource, but since the different row sources have a different number of items I sometimes get items in the rowsources that shouldn't be there. This is why I wanted multipages so I could dictate the rowsources easier.
Re: Userform: Letting a user click on a listbox item after a multipage has been click
So anybody want to answer?
Re: Userform: Letting a user click on a listbox item after a multipage has been click
Can you upload your file? or mail it to me if you don't wanna make it public?
Re: Userform: Letting a user click on a listbox item after a multipage has been click
I got it figured out. See the code below:
Code:
Private Sub ListDCodeABC_Change()
Select Case ListDCodeABC.ListIndex
Case 0 To 10: strDCodePathFolder = Sheets("DCode Pivot").Range("A5").Offset(ListDCodeABC.ListIndex, 0)
Case Else: MsgBox "No Entry Selected"
End Select
End Sub
Private Sub ListDCodeXYZ_Change()
Select Case ListDCodeXYZ.ListIndex
Case 0 To 10: strDCodePathFolder = Sheets("DCode Pivot").Range("A5").Offset(ListDCodeXYZ.ListIndex, 0)
Case Else: MsgBox "No Entry Selected"
End Select
End Sub
Private Sub ListDCodeDEF_Change()
Select Case ListDCodeDEF.ListIndex
Case 0 To 10: strDCodePathFolder = Sheets("DCode Pivot").Range("A5").Offset(ListDCodeDEF.ListIndex, 0)
Case Else: MsgBox "No Entry Selected"
End Select
End Sub
Private Sub MultiPage1_Change()
Dim i As Integer
Select Case MultiPage1.Value
Case 0
Sheets("DCode Pivot").PivotTables("PivotTable1").PivotFields("Plant").ClearAllFilters
Sheets("DCode Pivot").PivotTables("PivotTable1").PivotFields("Plant").CurrentPage = "ABC"
Case 1
Sheets("DCode Pivot").PivotTables("PivotTable1").PivotFields("Plant").ClearAllFilters
Sheets("DCode Pivot").PivotTables("PivotTable1").PivotFields("Plant").CurrentPage = "DEF"
Case 2
Sheets("DCode Pivot").PivotTables("PivotTable1").PivotFields("Plant").ClearAllFilters
Sheets("DCode Pivot").PivotTables("PivotTable1").PivotFields("Plant").CurrentPage = "XYZ"
End Select
End Sub
Private Sub OKButton_Click()
Me.Tag = 0
Me.Hide
End Sub
Thanks for your help!! :wave: