VBA 如何让textbox中输入信息,在表格中搜索到,并实时显示在listbox中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBA 如何让textbox中输入信息,在表格中搜索到,并实时显示在listbox中相关的知识,希望对你有一定的参考价值。
当前 text.box 中输入批号后,listbox中只显示B列对应的批号,希望可以将其他列也一同显示出来,如果可以的话能带上A1,B1,C1,D1,E1 标题。谢谢。
答:条件假设:
文本框: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
私信,文件发过来改一下就行。
已经搞定发邮件给你了。
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
以上是关于VBA 如何让textbox中输入信息,在表格中搜索到,并实时显示在listbox中的主要内容,如果未能解决你的问题,请参考以下文章
如何在 MS Access VBA 上将文本框注释值输入设置为表格数据插入
word VBA如何实现TextBox中的文字居中对齐,文本框有相关的属性么?谢谢