Vba 搜索多个值并选择
到目前为止,我有一个excel文件 我的问题是,我希望在按下搜索按钮后能够输入一个数字,并出现一个输入框,搜索栏中的数字用于选择电子表格中匹配的所有数字 也可以添加一些数字(用逗号分隔的40、21、33) 我目前的代码是:Vba 搜索多个值并选择,vba,excel,Vba,Excel,到目前为止,我有一个excel文件 我的问题是,我希望在按下搜索按钮后能够输入一个数字,并出现一个输入框,搜索栏中的数字用于选择电子表格中匹配的所有数字 也可以添加一些数字(用逗号分隔的40、21、33) 我目前的代码是: Sub SEARCH_Click() Dim sh1 As Sheet1 Dim rng As Range Dim uname As String Set sh1 = Sheet1: uname = InputBox("Input")
Sub SEARCH_Click()
Dim sh1 As Sheet1
Dim rng As Range
Dim uname As String
Set sh1 = Sheet1: uname = InputBox("Input")
With Application
.ScreenUpdating = False
.DisplayAlerts = False
End With
With sh1
.AutoFilterMode = False
Set rng = .Range("A4", .Range("A" & .Rows.Count).End(xlUp))
On Error Resume Next
rng.SpecialCells(xlCellTypeVisible).Select
If Err.number <> 0 Then MsgBox "Data not found" _
Else MsgBox "All matching data has been selected"
.AutoFilterMode = False
On Error GoTo 0
End With
With Application
.ScreenUpdating = True
.DisplayAlerts = True
End With
End Sub
子搜索\u单击()
调暗sh1,如图1所示
变暗rng As范围
像字符串一样变暗
设置sh1=Sheet1:uname=InputBox(“输入”)
应用
.ScreenUpdate=False
.DisplayAlerts=False
以
与sh1
.AutoFilterMode=False
设置rng=.Range(“A4”、.Range(“A”&.Rows.Count).End(xlUp))
出错时继续下一步
rng.SpecialCells(xlCellTypeVisible)。选择
如果错误号为0,则MsgBox“未找到数据”_
Else MsgBox“已选择所有匹配数据”
.AutoFilterMode=False
错误转到0
以
应用
.ScreenUpdate=True
.DisplayAlerts=True
以
端接头
我对编码相当陌生,所以很多都来自互联网研究等。放弃你的想法,选择一种新的编码方式。虽然最终可能对每个列应用一系列.AutoFilters,但使用简单地从.Find操作中收集结果更有意义
Private Sub CommandButton1_Click()
Dim uname As String, sh1 As Worksheet '<~~ there is no var type called Sheet1
Dim v As Long, fnd As Range, rng As Range, addr As String, vals As Variant
Set sh1 = Sheet4
uname = InputBox("Search for...")
vals = Split(Replace(uname, Chr(32), vbNullString) & Chr(44), Chr(44))
ReDim Preserve vals(UBound(vals) - 1)
With sh1
For v = LBound(vals) To UBound(vals)
If IsNumeric(vals(v)) Then vals(v) = Val(vals(v))
Set fnd = .Cells.Find(What:=vals(v), LookIn:=xlValues, LookAt:=xlWhole, _
SearchOrder:=xlByRows, SearchFormat:=False)
If Not fnd Is Nothing Then
addr = fnd.Address
Do
If rng Is Nothing Then
Set rng = fnd
Else
Set rng = Union(rng, fnd)
End If
Set fnd = .Cells.FindNext(after:=fnd)
Loop Until addr = fnd.Address
End If
addr = vbNullString
Set fnd = Nothing
Next v
If Not rng Is Nothing Then rng.Select
End With
End Sub
Private子命令按钮1\u单击()
Dim uname作为字符串,sh1作为工作表“我不清楚这个概念。您的叙述说您希望搜索电子表格中的所有匹配项并将其选中。您的代码在单个列上使用自动筛选。你想在整个工作表中选择一个不连续的匹配范围,还是想在一列中筛选多个值?我刚刚意识到我犯了一个错误,我正在用它进行测试,但显然我不明白它的意义,但我希望它是整个工作表,而不仅仅是一列好的,谢谢你提供的信息!这将帮助我alotI一直在尝试找出在预测模式中添加的位置和方式,例如,我输入19,它将自动向上或向下取整1(因此,如果电子表格有18或20,如果我输入19,但没有找到19,它将同时选择这两个)但是如果不使用函数Round\u Up()
有什么想法或帮助吗?非常感谢!要做到这一点,您必须逐个查看每个单元格。a中没有“预测模式”。哦,该死,所以如果你能用算法来实现这个结果,那就不可能了?