Many times you don’t want a user to proceed until all input boxes are filled. To solve this you can loop through each control with a For Each statement. For Each will be especially useful when you there are many controls and you don’t want to reference each name individually. The examples below show how to access the controls when they are either in a frame, in a multi page, or directly on the userform.

Dim fTextBox As Object
Dim xEptTxtName As String
For Each fTextBox In UserFormProjectData.Frame3.Controls
If TypeName(fTextBox) = "TextBox" Or TypeName(fTextBox) = "ComboBox" Then
If fTextBox.Text = "" And fTextBox.Enabled <> False Then
fTextBox.BackColor = vbYellow
xEptTxtName = xEptTxtName & fTextBox.Name & " is empty" & vbNewLine
Else
fTextBox.BackColor = vbWhite
End If
End If
Next
If xEptTxtName <> "" Then
MsgBox "yellow highlights must be filled out" 'xEptTxtName & vbNewLine & xTxtName"
Exit Sub
End If
Below are other ways to access the controls. Use ‘Me’ when the code is written in the userform or use the name of the userform when the code is called outside the userform such as a module.
For Each fTextBox In Me.MultiPage1.Pages("Page3legs").Controls
For Each fTextBox In Me.MultiPage1.Pages(1).Controls
For Each fTextBox In Me.Controls
For Each fTextBox In UserFormProjectData.Controls