Если заявление в течение цикла VBA - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь заставить мою функцию пропустить слова в моем списке, которых нет в моей строке, но, похоже, они не работают

Я пытался использовать VBA и собственные команды Excel ... однако я получаю тот же результат

Public Function test(range, y)

step = y

For Each cell In range

If InStr(cell, step, vbTextCompare) <> 0 Then

step = Application.WorksheetFunction.Replace(step,Application.WorksheetFunction.Search(cell, step), Len(cell), UCase(cell))

test = step
End If
Next cell

End Function

Когда я пытаюсь использовать эту функцию в Excel, я получаю #VALUE, я подозреваю, что это связано с тем, что не все значения в списке находятся в строке, однако причина для оператора if

1 Ответ

0 голосов
/ 26 сентября 2019

сначала у вас есть переменная в Инстр.и вы должны использовать первый критерий, если используете последний.

Также, если вы ищете полные слова, вам нужно использовать " " при поиске и замене.

И наконец, используйте vba'sЗаменить:

Public Function test(rng As range, y As String)
    Dim step As String
    step = y

    Dim cell As range
    For Each cell In rng
        If InStr(1, " " & step & " ", " " & cell & " ", vbTextCompare) > 0 Then
            step = Replace(" " & step & " ", " " & cell & " ", UCase(" " & cell & " "))
        End If
    Next cell

    test = Application.Trim(step)

End Function

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...