Вы получаете ошибку компиляции «функция не определена», потому что ContainsAny
вызывает функцию Contains
, которую вы удалили. Добавьте его обратно.
found = Contains(needle, CStr(haystack(k)), caseSensitive)
Но для того, чтобы он работал так, как вы хотите его использовать, необходимо перевернуть логику метода Contains
:
Public Function Contains(ByVal needle As String, ByVal haystack As String, Optional ByVal caseSensitive As Boolean = False) As Boolean
Dim compareMethod As VbCompareMethod
If caseSensitive Then
compareMethod = vbBinaryCompare
Else
compareMethod = vbTextCompare
End If
Contains = (InStr(1, haystack, needle, compareMethod) <> 0)
If Not Contains Then Contains = (InStr(1, needle, haystak, compareMethod) <> 0)
End Function
Таким образом, Contains
вернет True
, когда одна строка содержит другую - и с этим вы можете сделать:
If ContainsAny(Ophth.Range("H" & i).Value, False, "ABC", "123", "XYZ") Then
И условный блок будет выполняться, когда значение ячейки содержит одну из указанных строк.