IT is very easy if you can see the spreadsheet and the userform side by side
Set the UserForm.ShowModal = False and in the WareHouseData code module
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim UFrm As Object
For Each UFrm In UserForms
If UFrm.Name = "CheckedBy" Then
If UFrm.Visible Then
UFrm.OrderNumber = Target.EntireRow.Columns(1)
UFrm.RowNumber = Target.Row
Exit Sub
End If
'ElseIf 'Other Form Name
End If
Next
End Sub
In the UserForm Code
Option Explicit
Dim mRowNumber As Long
Dim mOrderNumber As Variant
Property Let OrderNumber(OrderNum As Variant)
mOrderNumber = ONum
Me.Controls("TextBoxOrderNumber").Text = ONum
End Property
Property Get OrderNumber() As Variant
OrderNumber = mOrderNumber
End Property
Property Let RowNumber(RowNum As Long)
mRowNumber = RowNum
End Property
Property Get RowNumber() As Long
RowNumber = mRowNumber
End Property
Property Subs Create Properties in Objects. Property Let Sub create Writable Properties and Get Subs create Readable Poperties.
Inside the Form, you can use the Properties or the Property Storage Variables (prefixed with "m" or "m_")
Examples:
Sheets("Warehouse Cata").Cells(mRowNumber, "E") = Me.Controls("TextBoxErrors").Text
Sheets("Warehouse Cata").Cells(RowNumber, "E") = Me.Controls("TextBoxErrors").Text
My personal preference is to use the Variable, reserving the Properties for interfacing with outside objects and code. It helps keep things straight in my head. (but that's another story )