У меня есть немного кода VBA, который выполняет сопоставление с другим рабочим листом.Строка, возвращаемая из этого совпадения, затем используется для определения результата оператора If
.Вот мой код:
On Error Resume Next 'Accuracy Index Match Start
aMatchRow = Application.Match(summarySheet.Cells(accuracyRow, 3), aCommSheet.Range("C:C"), 0)
On Error GoTo 0
With summarySheet.Cells(accuracyRow, 15)
If aMatchRow > 0 Then
.Value = aCommSheet.Cells(aMatchRow, 15)
Else
.Value = "COMMENT REQUIRED"
End If
End With
Проблема, с которой я сталкиваюсь, заключается в том, что даже в случае отсутствия совпадения возвращается значение.Так, например, в сценарии, где summarySheet.Cells(accuracyRow, 3)
не имеет соответствия в aCommSheet.Range("C:C")
, я все еще получаю возвращаемое значение строки, которое затем передается в оператор If
, поэтому неправильное значение возвращается в summarySheet.Cells(accuracyRow, 15)
.
В случае, если совпадения нет, следует выполнить «ELSE».Но «если» выполняется несмотря ни на что.