Использование пользовательской формы для отдельного поля кажется немного сложным, как насчет InputBox, что-то вроде этого:
Sub findOrder()
Dim ws As Worksheet: Set ws = ActiveWorkbook.Sheets("Sheet Name Here")
Dim lRow As Long: lRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row 'get last row at column A - assuming is populated
restartOrder:
Dim strOrder As String: strOrder = InputBox("Please input your order name", "Let's find the order")
Dim rngOrder As Range
Set rngOrder = ws.Range("A1:A" & lRow).Find(strOrder) 'Find the order, assuming they are in column A
If Not rngOrder Is Nothing Then '
rngOrder.Select 'Select the order range
Else
Dim answer As Integer: answer = MsgBox("Order wasn't found, want to try again?", vbYesNo + vbQuestion, "Not found")
If answer = vbYes Then
GoTo restartOrder 'restart the search
End If
End If
End Sub
РЕДАКТИРОВАТЬ: добавлена улучшенная обработка для порядка, не найденного.
EDIT2: добавьте опцию пользовательской формы ... добавьте CommandButton
и TextBox
к вашей пользовательской форме:
Private Sub CommandButton1_Click()
findOrder TextBox1.Value
End Sub
Sub findOrder(strOrder As String)
Dim ws As Worksheet: Set ws = ActiveWorkbook.Sheets("Sheet Name Here")
Dim lRow As Long: lRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row 'get last row at column A - assuming is populated
restartOrder:
Dim rngOrder As Range
Set rngOrder = ws.Range("A1:A" & lRow).Find(strOrder) 'Find the order, assuming they are in column A
If Not rngOrder Is Nothing Then '
rngOrder.Select 'Select the order range
Else
Dim answer As Integer: answer = MsgBox("Order wasn't found, want to try again?", vbYesNo + vbQuestion, "Not found")
If answer = vbYes Then
Exit Sub
Else
Unload Me
End If
End If
End Sub