Поиск определенного c текста в столбце внутри оператора If - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь найти конкретный текст c в столбце с помощью оператора if (показанного ниже). В настоящее время я ищу каждую ячейку индивидуально, но хотел бы иметь возможность сократить этот код для поиска всех из них.

If InStr(Sheet2.Range("R" & CustRow).Value, "Cradle") > 0 Then
    If InStr(Sheet2.Range("R5"), "PFC") Or
    If InStr(Sheet2.Range("R6"), "PFC") Or
    If InStr(Sheet2.Range("R7"), "PFC") Or
    If InStr(Sheet2.Range("R8"), "PFC") Or
    If InStr(Sheet2.Range("R9"), "PFC") Or
    If InStr(Sheet2.Range("R10"), "PFC") Or
    If InStr(Sheet2.Range("R11"), "PFC") Or
    ....
 Then
    ThisWorkbook.FollowHyperlink PdfTemplate16
Else: ThisWorkbook.FollowHyperlink PDFTemplateFile17
Application.Wait Now + 0.00001
End If

Я хотел бы иметь возможность искать от строки 5 до строки 44, но на самом деле не Я не хочу, чтобы здесь повторяющийся код.

Спасибо за любую помощь.

Ответы [ 2 ]

1 голос
/ 07 мая 2020

Используйте Range.Find и проверьте, действительно ли Find удалось выполнить то или иное действие, примерно так:

Dim rangeToFind as Range
Set rangeToFind = Sheet2.Range("R5:R44").Find(What:="PFC", LookIn:=xlValues, LookAt:=xlPart)

If Not rangeToFind Is Nothing Then
   ' found a PFC cell, do thing A
Else
   ' no cell found, do thing B
End If
0 голосов
/ 07 мая 2020

Вы можете собрать вместе и просто написать один раз:

Sub poiuyt()
    With Application.WorksheetFunction
        s = Join(.Transpose(Sheet2.Range("R5:R44").Value), Chr(1))
        If InStr(s, "PFC") > 0 Then
            MsgBox "in there somewhere"
        Else
            MsgBox "not in there anywhere"
        End If
    End With
End Sub
...