VBA 如何让textbox中输入信息,在表格中搜索到,并实时显示在listbox中

当前text.box中输入批号后,listbox中只显示B列对应的批号,希望可以将其他列也一同显示出来,如果可以的话能带上A1,B1,C1,D1,E1标题。谢谢。... 当前 text.box 中输入批号后,listbox中只显示B列对应的批号,希望可以将其他列也一同显示出来,如果可以的话能带上A1,B1,C1,D1,E1 标题。谢谢。 展开
 我来答
mzz9060
2018-08-10 · TA获得超过1321个赞
知道小有建树答主
回答量:773
采纳率:84%
帮助的人:193万
展开全部

答:条件假设:

文本框:TextBox1;列表框:ListBox1;数据区域左上角为A1;此工作表为活动工作表。

添加TextBox1事件代码:

Private Sub TextBox1_Change()
    Dim Arr() As Variant
    Dim LastRow As Long, Count As Long, i As Long
    LastRow = Cells(Rows.Count, 2).End(xlUp).Row
    ReDim Arr(1 To 5, 1 To LastRow)
    Count = 1
    For i = 2 To LastRow
        If Cells(i, "B") = TextBox1.Text Then
            Arr(1, Count) = Cells(i, "A")
            Arr(2, Count) = Cells(i, "B")
            Arr(3, Count) = Cells(i, "C")
            Arr(4, Count) = Cells(i, "D")
            Arr(5, Count) = Cells(i, "E")
            Count = Count + 1
        End If
    Next
    ReDim Preserve Arr(1 To 5, 1 To Count)
    ListBox1.ColumnCount = 5
    ListBox1.List = Application.Transpose(Arr)
End Sub

追问

感谢您的答复,已经成功实现,还有个问题需要请教您,

假设listbox中的数据在窗体打开就带出,那么如果我在textbox中输入对应批号是否可以在listbox 中自动选定(即定位)我想要查找的这个信息。

追答
Private Sub TextBox1_Change()
With ListBox1
For i = 0 To .ListCount - 1
.Selected(i) = False
Next i
If TextBox1.Text "" Then
.MultiSelect = fmMultiSelectMulti
For i = 0 To .ListCount - 1
''与列表框的第5列值匹配,可更改
If TextBox1.Text = .List(i, 4) Then
.Selected(i) = True
End If
Next i
End If
End With
End Sub
帐号已注销
2018-08-10 · TA获得超过1663个赞
知道小有建树答主
回答量:6318
采纳率:30%
帮助的人:926万
展开全部
我可以给你做,发文件来!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
硅谷少年
2018-08-10 · TA获得超过7556个赞
知道大有可为答主
回答量:7116
采纳率:82%
帮助的人:1421万
展开全部

私信,文件发过来改一下就行。

已经搞定发邮件给你了。

Private Sub TextBox1_Change()
    ListBox1.Clear
    Set rng = Sheets(1).Columns(2).Find(TextBox1.Text, lookat:=xlWhole)
    If Not rng Is Nothing Then
        For j = rng.Row + 1 To Sheets(1).Cells(Rows.Count, 2).End(3).Row
            If Sheets(1).Cells(j, 2) = rng Then
                ListBox1.AddItem (vr(Range("A1:E1")))
                ListBox1.AddItem (vr(Range("A" & rng.Row & ":E" & rng.Row)))
            End If
        Next j
    End If
End Sub
Private Function vr(rng As Range)
    For Each cell In rng
        s = s & "|" & cell.Value
    Next
    vr = s
End Function
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式