Happy new year szchris384. And welcome to ExcelFox
If you use a for each loop, the loop order will take it by tab order. However, to keep things more in control, it would be better to give specific names to your controls. Like txtMP1Data1, txtMP1Data2, txtMP1Data3, txtMP2Data1, txtMP2Data2, txtMP2Data3, txtMP3Data1 etc
That way, you can do a loop like this.
The other way of course is to go with the tab orderCode:Sub GetDataFromAllTextBoxesByName() Dim lngMultiPages As Long Dim lngCount As Long Dim lngCounter As Long Dim lngColIndex As Long For lngMultiPages = 0 To Me.MultiPage1.Pages.Count - 1 For lngCount = 0 To Me.MultiPage1.Pages(lngMultiPages).Controls.Count - 1 If TypeName(Me.MultiPage1.Pages(lngMultiPages).Controls(lngCount)) = "TextBox" Then lngCounter = lngCounter + 1 End If Next lngCount For lngCounter = 0 To lngCounter - 1 lngColIndex = lngColIndex + 1 Cells(3, lngColIndex).Value = Me.MultiPage1.Pages(lngMultiPages).Controls("txtMP" & lngMultiPages & "Data" & lngCounter).Text Next lngCounter lngCounter = 0 Next lngMultiPages End Sub
Code:Sub GetDataFromAllTextBoxesByTabOrder() Dim lngMultiPages As Long Dim lngCount As Long Dim lngCounter As Long For lngMultiPages = 0 To Me.MultiPage1.Pages.Count - 1 For lngCount = 0 To Me.MultiPage1.Pages(lngMultiPages).Controls.Count - 1 If TypeName(Me.MultiPage1.Pages(lngMultiPages).Controls(lngCount)) = "TextBox" Then lngCounter = lngCounter + 1 Cells(2, lngCounter).Value = Me.MultiPage1.Pages(lngMultiPages).Controls(lngCount).Text End If Next lngCount Next lngMultiPages End Sub




Reply With Quote

Bookmarks