Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 需要它在重复记录中搜索,直到找到条件_Vba_Excel - Fatal编程技术网

Vba 需要它在重复记录中搜索,直到找到条件

Vba 需要它在重复记录中搜索,直到找到条件,vba,excel,Vba,Excel,我对VBA还是一个新手,正在努力学习下面的代码 我试图做的是让搜索功能查看列1中的所有单元格,并找到单元格1的条件与PickerName2匹配。文本和偏移单元格5为0,然后偏移单元格6=空白 我遇到的问题是,在第1列中有一个重复项,一旦它找到与PickerName2匹配的名称,它就会检查偏移单元格5和6,因为这些单元格与条件不匹配,它会给出消息,说明它们当前没有拾取 即使在工作表的下一步有一条符合条件的记录,也会出现这种情况。我希望它查看所有记录,直到找到条件,或者如果它检查了A列中所有填充的单

我对VBA还是一个新手,正在努力学习下面的代码

我试图做的是让搜索功能查看列1中的所有单元格,并找到单元格1的条件与PickerName2匹配。文本和偏移单元格5为0,然后偏移单元格6=空白

我遇到的问题是,在第1列中有一个重复项,一旦它找到与PickerName2匹配的名称,它就会检查偏移单元格5和6,因为这些单元格与条件不匹配,它会给出消息,说明它们当前没有拾取

即使在工作表的下一步有一条符合条件的记录,也会出现这种情况。我希望它查看所有记录,直到找到条件,或者如果它检查了A列中所有填充的单元格,但没有匹配项,那么它将给出消息,说明它们当前没有选择

我真希望有人能帮忙:-)

艾尔

Private子命令按钮3\u单击()
暗淡无光
将ws设置为工作表
作为字符串的Dim stresearch
Dim aCell As系列
尺寸与射程相同,长度与射程相同
“~~>设置要搜索IMEI的工作表
设置ws=Sheets(“PickData”)
与ws
“~~>获取要搜索的值
strSearch=PickerName2.Text
“~~~>A列是第1列,所以B列是第2列。这就是我们正在寻找的地方
下面的代码中使用了'~~>xlother,这样我们就可以找到一个完整的匹配项
“~~>xlPart应该在查找部分匹配时使用。
Set aCell=.Columns(1).Find(What:=strSearch,LookIn:=xlValues_
查看:=xlother,搜索顺序:=xlByRows,搜索方向:=xlNext_
MatchCase:=False,SearchFormat:=False)
“~~>获取找到匹配项的单元格的行,并向其中添加数据
如果不是,则aCell为Nothing,aCell.Offset(0,5).Value“”和aCell.Offset(0,6).Value=“”,然后
MsgBox“&PickerName2.Text&”当前正在拾取-“&aCell.Offset(0,1)&”&aCell.Offset(0,2)_
&“”&aCell.Offset(0,3)_
& " "
UserForm1.Hide
其他的
MsgBox“”&PickerName2.Text&“没有未完成的PIK!”,vb感叹号
PickerName2.Value=“”
出口接头
如果结束
以
PickNo2.Value=“”
PickerName2.Value=“”
UserForm1.Hide
端接头
我在网上做了一些搜索,并尝试了类似于以下代码的东西,但不断得到一个对象所需的错误,但看不出我哪里出错了

Dim rng As Range
Dim i As Integer
Dim finalrow As Integer

finalrow = Sheets("PickData").Range("A10000").End(xlUp).Row

    For i = 2 To finalrow
    If Cells(i, 1).Value = UserForm1.PickerName2.Text And (Cell.Offset(i, 5) <> "") And (Cell.Offset(i, 6) = "") Then
      MsgBox " " & PickerName2.Text & " is currently picking - " & Cell.Offset(i, 1) & " " & Cell.Offset(i, 2) _
      & " " & Cell.Offset(i, 3) _
      & " "
      End If
    Next i
Dim rng As范围
作为整数的Dim i
将finalrow设置为整数
finalrow=工作表(“PickData”)。范围(“A10000”)。结束(xlUp)。行
对于i=2到最后一行
如果单元格(i,1).Value=UserForm1.PickerName2.Text和(Cell.Offset(i,5)”)和(Cell.Offset(i,6)=”),则
MsgBox“&PickerName2.Text&”当前正在拾取-“&Cell.Offset(i,1)&”&Cell.Offset(i,2)_
&“”&Cell.Offset(i,3)_
& " "
如果结束
接下来我

您第一次尝试使用
范围。Find
方法编写代码是一个很好的开始。 现在通过使用
Range.FindNext
方法扩展此方法

我应该帮助你

在第二段代码中:

对单元格偏移量的引用。。。应该分别是类似于单元格(i,1)、偏移量(0,5)和
单元格(i,1)、偏移量(0,1)和单元格(i,1)、偏移量(0,3)


另外,对PickerName2的第二次引用应该使用UserForm1进行限定,就像在
UserForm1中一样。PickerName2

今晚没有乐趣,我明天会再试一次。感谢@barrylajothanks@barrylajo的链接今天早上一切正常:-)好消息,艾伦,做得很好。您是否使用FindNext或修改了“原始”代码?感谢您接受答案。我使用了第二段代码,但修改为单元格(I,1)。偏移量(0,5)等。它工作完美,并给出了所需的结果:-)感谢您的帮助@barryleajo
Dim rng As Range
Dim i As Integer
Dim finalrow As Integer

finalrow = Sheets("PickData").Range("A10000").End(xlUp).Row

    For i = 2 To finalrow
    If Cells(i, 1).Value = UserForm1.PickerName2.Text And (Cell.Offset(i, 5) <> "") And (Cell.Offset(i, 6) = "") Then
      MsgBox " " & PickerName2.Text & " is currently picking - " & Cell.Offset(i, 1) & " " & Cell.Offset(i, 2) _
      & " " & Cell.Offset(i, 3) _
      & " "
      End If
    Next i