【问题标题】:How to display a search result in a UserForm's TextBox by matching the search results from another TextBox?如何通过匹配来自另一个 TextBox 的搜索结果在 UserForm TextBox 中显示搜索结果?
【发布时间】:2021-11-03 07:39:47
【问题描述】:

我正在尝试使用 2 个文本框查找此用户窗体的代码:

我有一张单独的数据表:

我需要使用 REF ID(在第 1 列中)进行搜索,它应该只在下面的 textbox2 中显示第 4 列(注释),并将 WordWrap 和 MultiLine 属性设置为 True。有人可以帮我解决这个问题吗?

我试过了:

Private Sub CommandButton1_Click()
Dim Search As String
Dim FoundCell As Range, SearchRange As Range
Dim ws As Worksheet
Set ws = Worksheets("Database")
' search sheet change name as required
Set SearchRange = ws.Range("A1", ws.Range("J65536").End(xlUp))

Search = Me.jobid.Text

If Len(Search) = 0 Then Exit Sub

Set FoundCell = SearchRange.Find(What:=Search, LookIn:=xlValues, LookAt:=xlWhole)

If Not FoundCell Is Nothing Then
    Me.resultid.Value = FoundCell.Offset(0, 4).Value
Else
    MsgBox Search & Chr(10) & "Record Not Found", 48, "Not Found"
End If

End Sub

我收到错误

Me.resultid.Value = FoundCell.Offset(0, 4).Value

我做错了什么?

【问题讨论】:

  • 欢迎来到董事会。请您阅读How to Askminimal reproducible example。很少有人会为您编写代码 - 如果您可以发布您尝试过的内容,那么人们会非常乐意帮助您的代码运行或指出它为什么不起作用。

标签: excel vba search textbox userform


【解决方案1】:

主要的可能是您的偏移量。将其从 4 更改为 3:

Me.resultid.Value = FoundCell.Offset(0, 3).Value

另一个不正确的可能是你的SearchRange。现在它从 A 列跨越到 J 列。据我所知,您只想查看 A 列(REF ID)。所以把SearchRange改成这样:

Set SearchRange = ws.Range("A1", ws.Range("A65536").End(xlUp))

进行这些更改后,我能够在单元格 A2 中搜索“H001”,并将单元格 D2 中的值写入另一个文本框:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多