我想检查两个条件:
Tabelle3.Cells(7 + i, 1) <> ""
Tabelle3.Cells(7 + i, 1)
Tabelle8.Range("A:A")
醇>
如果其中一个未满足,我希望它跳转到下一个i
。
因此,我使用Application.Match
作为第二个条件,代码如下:
If Tabelle3.Cells(7 + i, 1) <> "" And Application.Match(Tabelle3.Cells(7 + i, 1), Tabelle8.Range("A:A"), False) Then
但运行时错误'13'“类型不兼容”发生。有人知道我为什么以及如何使这个工作? :)
整个代码下方:
Sub Test()
Dim lastrow2 As Long
lastrow2 = Tabelle3.Range("A" & Rows.Count).End(xlUp).Row
Set myrange2 = Tabelle8.UsedRange
For i = 2 To lastrow2
If Tabelle3.Cells(7 + i, 1) <> "" And Application.Match(Tabelle3.Cells(7 + i, 1), Tabelle8.Range("A:A"), False) Then
Tabelle3.Cells(7 + i, 19) = Application.WorksheetFunction.VLookup(Tabelle3.Cells(7 + i, 1), myrange2, 3, False)
Tabelle3.Cells(7 + i, 20) = Application.WorksheetFunction.VLookup(Tabelle3.Cells(7 + i, 1), myrange2, 4, False)
End If
Next i
End Sub
答案 0 :(得分:1)
运行此代码:
Sub TestMe()
Debug.Print CBool(Application.Match("Something", Range("A:A"), False))
End Sub
它会在即时窗口上打印True
,尽管工作表的第一列上没有字符串“Something”。因此,在您的情况下,Application.Match(Tabelle3.Cells(7 + i, 1), Tabelle8.Range("A:A"), False)
将始终评估为True
,而这不是应该如何。
如果无法找到该值,请考虑对IsError(Application.Match(Tabelle3.Cells(7 + i, 1), Tabelle8.Range("A:A"), False))
之类的错误进行检查,该错误为True
。