Функция соответствия VBA, находящая несуществующее значение - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть немного кода 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».Но «если» выполняется несмотря ни на что.

1 Ответ

0 голосов
/ 21 февраля 2019

Чтобы расширить комментарий @ GSerg:

Dim m
m = Application.Match(summarySheet.Cells(accuracyRow, 3), aCommSheet.Range("C:C"), 0)


With summarySheet.Cells(accuracyRow, 15)
    If Not IsError(m) Then '<<< test for no match here
        .Value = aCommSheet.Cells(m, 15)
    Else
        .Value = "COMMENT REQUIRED"
    End If
End With
...