excel - 使用文本框在 Excel 中使用 VBA 进行自动过滤
问题描述
嗨,我是 VBA 的新手,到目前为止我已经把它拼凑起来,我最终让它工作但不是 100%。
我正在尝试使用多个文本框来自动过滤数据。目前我仅将 2 用于测试目的,但最终希望将其扩展到 4。每个文本框当前过滤但覆盖其他文本框,我希望它们一起工作,所以如果我在第一个文本框中输入一个单词,它将返回该列中包含该单词的所有实例,然后当我在第二个单词中添加一个单词时,它将进一步过滤这些结果,
Private Sub TextBox1_Change()
If Len(TextBox1.Value) = 0 Then
Sheet1.AutoFilterMode = False
Else
If Sheet1.AutoFilterMode = True Then
Sheet1.AutoFilterMode = False
End If
Sheet1.Range("A2:C" & Rows.Count).AutoFilter field:=1, Criteria1:="*" & TextBox1.Value & "*"
End If
End Sub
Private Sub TextBox2_Change()
If Len(TextBox2.Value) = 0 Then
Sheet1.AutoFilterMode = False
Else
If Sheet1.AutoFilterMode = True Then
Sheet1.AutoFilterMode = False
End If
Sheet1.Range("A2:C" & Rows.Count).AutoFilter field:=2, Criteria1:="*" & TextBox2.Value & "*"
End If
End Sub
任何帮助,将不胜感激。
解决方案
你在寻找类似的东西吗
Private Sub TextBox1_Change()
filterTextboxes
End Sub
Private Sub TextBox2_Change()
filterTextboxes
End Sub
Private Sub filterTextboxes()
If Len(TextBox1.Value) = 0 And Len(TextBox2.Value) = 0 Then
Sheet1.AutoFilterMode = False
Else
If Sheet1.AutoFilterMode = True Then
Sheet1.AutoFilterMode = False
End If
Sheet1.Range("A2:C" & Rows.Count).AutoFilter Field:=1, Criteria1:="*" & _
TextBox1.Value & "*", Operator:=xlAnd
Sheet1.Range("A2:C" & Rows.Count).AutoFilter Field:=2, Criteria1:="*" & _
TextBox2.Value & "*", Operator:=xlAnd
End If
End Sub
推荐阅读
- python - 不确定对 in list2=i[:4] Python 3++ 的理解
- javascript - setState 的顺序
- reactjs - Redux Offline 问题,将reducer 重新水化为null
- java - 问题:我想在运行 mvn eclipse:clean 时从我的 maven 项目中删除目录
- php - laravel 5.5 Auth::attempt login 在本地服务器上工作但在实时服务器上不工作
- arrays - 在对角线上垂直堆叠 5 个二维数组以构建一个完整的二维数组
- android - androidTest 文件夹和 apk 未为产品风味 android 仪器测试创建
- python - Django:在抽象模型中包含 get_absolute_url()?
- python - 如何遍历 JSON 项和 JSON 子项
- grails - Grails test-app 失败,而 test-app 单独的联合测试工作