This question is a "part 3" of a project I'm working on. After adding multiple labels and textboxes to an Excel userform during runtime using vba and retrieving data from multiple textboxes created during runtime in an Excel userform using vba, I'm now trying to use all that data to select the names in the dropdown boxes to assign work to.
The issue I'm having is, I have the code set up to loop through MyArray(i) from LBound to UBound that gives us the names of the employees, as it does this, it is also looping through an array created by splitting MultFLNAmt that was retrieved from the UserForm so we can determine how many FLNs each employee will receive, then it also loops through to find the name of the current employee selected to assign to. Once all of this is done and everyone has the correct amount of FLNs assigned, it will click the Submit button in the application to finish the assignment.
' Shows and hides the multiple option UserForm
MultipleOptionForm.Show
MultipleOptionForm.Hide
' Creates an array from a comma-delimited
' list of numbers stored in a variable
MFA = Split(MultFLNAmt, ",")
' Activates the application we will be assigning work from
WShell.AppActivate "Non-Keyable Document Management System"
' Table cell node where the dropdown is located
tdNode = 64
a = 1
' Loop through each of the names within the array
For c = LBound(MyArray) + 1 To UBound(MyArray) - 1
' Loop through the array to see how many FLNs each person receives
For b = 1 To MFA(a)
' Loop through to locate the current name of the employee
i = 0
For Each objOption In objIE.Document.GetElementsByTagName("table")(0).GetElementsByTagName("td")(tdNode).GetElementsByClassName("txt_input1")(0).Options
Q(i) = objOption.Text & "-" & objOption.Value
strWQ = Q(i)
' Remove "Selected User" from the list of options
If i = 0 Then
If strWQ = "--Select User---" Then strWQ = ""
Else
' If an option matches the current name selected,
' select that option, then increase the node location
' for the next dropdown box
If InStr(strWQ, MyArray(c)) Then
objOption.Selected = True
objIE.Document.GetElementsByTagName("table")(0).GetElementsByTagName("td")(tdNode).GetElementsByClassName("txt_input1")(0).OnChange
tdNode = tdNode + 23
Else
objOption.Selected = False
End If
End If
Next
i = i + 1
Next
Next
objIE.Document.all.Item("btn_submit1").Click
While the code is working for the most part, where it's failing is, if MFA(a) is 2 or more, only the first dropdown is selected. I put the code in debugging mode and I'm not seeing why 2 or more are not being selected. Any ideas?
