VBA 关于textbox和listbox清空的问题,请教大佬
vb吧
全部回复
仅看楼主
level 2
synsky 楼主
请教大佬,写了一个程序实现在sheet中查一个数据,查到后用listbox联想显示出来,用listbox的click事件完成选择,然后当我删除textbox1的信息重新输入第二次时,listbox还会保留上次的列表,思考了很久一直没找到合适的方法清空listbox,请大佬帮忙看看要怎么写,感谢!
Private Sub TextBox1_Change()
Dim i As Integer
Dim m_end As Integer
Dim k As Integer
If Len(Me.TextBox1.Value) >= 1 Then
Me.ListBox2.Clear
End If
k_end = Sheet4.Range("c65535").End(xlUp).Row
For k = 2 To k_end
If InStr(Sheet4.Range("a" & k), Me.TextBox1.Value) > 0 Then
Me.ListBox2.AddItem Sheet4.Range("a" & k)
End If
Next
If Me.ListBox2.ListCount > 0 Then
Me.ListBox2.Visible = True
Else: Me.ListBox2.Visible = False
End If
2021年03月11日 14点03分 1
level 11
没有发现造成“输入第二次时,listbox还会保留上次的列表”的情况的代码。因为这只是局部,会不会还有其他代码会干预list2?
可以在Me.ListBox2.Clear之后设立断点,查看是否清空。
另外,还有两点建议
1、去掉“If Len(Me.TextBox1.Value) >= 1 Then”判断。按照你说的只要有改变,list2就应该全部清空查找新的结果
2、Sheet4.Range("a" & k)可以预读到一个简单变量,避免多次访问文件,尤其是通过计算位置访问单元格。
2021年03月12日 00点03分 2
level 2
synsky 楼主
其他区域没有listbox的代码,只有一个click给textbox赋值,建议1我看了确实是你说的这样,删除了也没有影响。列表保留的问题我仔细看了下,在不输入任何信息的情况下,按空格键再按删除,listbox就会产生一个完整的姓名表单,是不是就代表insrt已经>0了,但是空格和range列的信息不一样也不好匹配啊?怎么还会有清单出来
谢谢!
2021年03月12日 11点03分 3
1