массив строк для поиска и смещения значений - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь найти переменную, состоящую из нескольких элементов, которая будет найдена в облаке, а затем сместить значение в следующий столбец. приведенный ниже код работает только с первой переменной «a *», но не с остальными.

Как я могу go исправить это?

Sub a()

Dim rng As Range
Dim sFind(10) As String

sFind(0) = "a*"
sFind(1) = "b*"
sFind(2) = "c*"
sFind(3) = "d*"
sFind(4) = "e*"
sFind(5) = "f*"
sFind(6) = "g*"
sFind(7) = "h*"
sFind(8) = "i*"
sFind(9) = "j*"

For Each rng In Range("J2", Range("J65536").End(xlUp))
    If Not rng.find(sFind(), LookIn:=xlValues) Is Nothing Then
        rng.Offset(0, 1).Value = "1"
    End If
Next rng

End Sub

Ответы [ 2 ]

1 голос
/ 29 апреля 2020

Я подозреваю, что вы неправильно поняли l oop. Это должно работать

Sub a()
    Dim rng As Range
    Dim sFind(10) As String
    Dim i as Long

    sFind(0) = "a*"
    sFind(1) = "b*"
    sFind(2) = "c*"
    sFind(3) = "d*"
    sFind(4) = "e*"
    sFind(5) = "f*"
    sFind(6) = "g*"
    sFind(7) = "h*"
    sFind(8) = "i*"
    sFind(9) = "j*"

    With Range("J2", Range("J65536").End(xlUp))
        For i = LBound(sFind) To UBound(sFind)
            Set rng = .Find(what:=sFind(i), LookIn:=xlValues)
            If Not rng Is Nothing Then
                rng.Offset(0, 1).Value2 = 1
            End If
        Next i
    End With
End Sub
0 голосов
/ 29 апреля 2020

Один из способов - изменить внутренний код и добавить al oop, как показано ниже, который проверит все записи.

For i = lbound(sFind) to ubound(sFind)
    If Not rng.find(sFind(i), LookIn:=xlValues) Is Nothing Then
        rng.Offset(0, 1).Value = "1"
        Exit For
    End If
Next i
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...