我将一些VBA放在一起以找到具有符合我循环中当前值的特定条件的最后一行,然后采取措施。此VBA代码有效,直到我意识到工作表可以多次包含匹配值,但另一列中的日期不同。因此,我现在正在尝试向VBA添加第二个搜索条件。
这是到目前为止的VBA片段。
For Each t In trans.Cells
On Error GoTo NxtT2
If t.Value = Empty Then
On Error GoTo 0
ty = t.Offset(0, -3).Value
tx = t.Offset(0, -6).Value
Set searchTerm = .Range("E:E")
Set where = searchTerm.Find(what:=ty, after:=searchTerm(1), searchdirection:=xlPrevious)
If t.Offset(0, -3).Value = where.Value And IsError(where.Offset(0, 3).Value) Then
t.Value = "#N/A"
End If
End If
NxtT:
On Error GoTo 0
If t.Offset(1, -3).Value = "" Then Exit For
Next t
NxtT2:
Resume NxtT
基本上,我要做的是使Set where = searchTerm.Find(what:=ty, after:=searchTerm(1), searchdirection:=xlPrevious)
行也包含tx
值和已经在其中的ty
。
如果可能的话,这样的事情?
Set where = searchTerm.Find(what:=ty & tx, after:=searchTerm(1), searchdirection:=xlPrevious)
但是我知道这不是正确的语法。
关于如何以最简单的方式解决此问题的任何建议?
答案 0 :(得分:1)
不是原始问题的答案,而是我通过现成的代码审查创建的问题。
您的错误处理从未正确包装。代码仍然认为它在错误处理程序中,因为您实际上无法使用Next
“退出”错误处理程序-您需要使用{{1保留此错误处理“实例” }}。
为此提供一个机会,以进行清理错误处理。
注意:我声明了变量是因为设置了Resume
,您也应该设置。我已经做出了一个大胆的假设,即您已经在共享代码之外声明了变量。使用您声明的变量,而不要使用我的快速补丁Option Explicit
声明。
Variant