做while循环根据单元格(find)中的可用值在vba中

您好我正在写一个代码在VB检查表中的特定值,如果该值不可用,那么它应该回到另一个工作表采取新的价值,如果find值,我必须做一些操作该表我有下面的代码来find工作表中的值,但如果我通过相同的DO WHILE循环作为条件,它会给编译错误

find代码

Selection.Find(What:=last_received, After:=ActiveCell, LookIn:= _ xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _ xlNext, MatchCase:=False, SearchFormat:=False).Activate 

有人可以帮我写上一个代码,而在循环条件上面findDO,如果条件给出假(即,如果在表中找不到该值),那么我应该使用一些其他的值来找

这是我将要放在循环中的代码

 Sheets("Extract -prev").Select Application.CutCopyMode = False ActiveWorkbook.Worksheets("Extract -prev").Sort.SortFields.Clear 'sorting with tickets ActiveWorkbook.Worksheets("Extract -prev").Sort.SortFields.Add Key:=Range( _ "C2:C2147"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets("Extract -prev").Sort .SetRange Range("A1:AB2147") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Application.Goto Reference:="R1C3" 'taking last received ticket Selection.End(xlDown).Select Selection.Copy Sheets("Calc").Select Application.Goto Reference:="Yesterday_last_received" ActiveSheet.Paste 

这个代码取最后一张票,但基于它的可用性在下一张表“摘录”,我必须在最后一张(和上)之前取一张票。

尝试下面的代码:

 Sub test() Dim lastRow As Long Dim rng As Range Dim firstCell As String lastRow = Sheets("sheet1").Range("A" & Rows.Count).End(xlUp).Row For i = 1 To lastRow Set rng = Sheets("sheet2").Range("A:A").Find(What:=Cells(i, 1), LookIn:=xlValues, lookAt:=xlPart, SearchOrder:=xlByRows) If Not rng Is Nothing Then firstCell = rng.Address Do While Not rng Is Nothing rng.Offset(0, 1) = "found" Set rng = Sheets("sheet2").Range("A:A").FindNext(rng) If Not rng Is Nothing Then If rng.Address = firstCell Then Exit Do End If Loop Next End Sub 

在这里输入图像描述