修复错误:
您需要删除“订单”周围的引号,目前您正在搜索字符串“订单”而不是变量,这应该可以:
Sub Find()
Dim Order As String
Order = frmForm.txtSO
Sheets("Download").Select
Range("D2:D4130").Find(What:=Order).Select
End Sub
未找到搜索字符串的帐户:
您可能还想添加一些代码来处理无法找到“订单”的情况,如下所示:
Sub Find()
Dim Order As String
Dim findRng As Range
Order = frmForm.txtSO
Set findRng = Sheets("Download").Range("D2:D4130").Find(What:=Order)
If Not findRng Is Nothing Then
Sheets("Download").Activate
findRng.Select
Else
MsgBox ("Order not found")
End If
End Sub
确保可以找到多个搜索字符串:
为确保您能够“循环”通过 D 列中的重复记录,您需要再次修改代码。本质上,您需要更改 Find 范围,以便它从当前选定的单元格开始搜索并从那里向下工作:
Sub Find()
Dim Order As String
Dim findRng As Range
Order = frmForm.txtSO
Set findRng = Range("D" & ActiveCell.Row & ":D4130").Find(What:=Order)
If Not findRng Is Nothing Then
findRng.Select
Else
MsgBox ("Order not found")
End If
End Sub
但是,如果打开用户窗体时,当前选定的单元格位于比您要搜索的记录低的行上,则上述代码将无法找到所述记录。为了解决这个问题,不要从此子激活“下载”表,只需激活该表并从启动用户表单的同一子中选择单元格D1,如下所示:
Sheets("Download").Activate
Range("D1").Select
frmForm.Show
这将确保当用户窗体最初启动时,搜索将从 D1 开始,但是每次运行 Find 时,它将从上一次运行中选择的任何内容开始搜索