Не генерирует идентификаторы, которые начинаются с определенного значения - PullRequest
1 голос
/ 29 мая 2019

У меня есть ссылка, которая генерирует идентификаторы, просматривая последнюю строку одного из листов и добавляя 1 к этому. Эти идентификаторы не могут быть какими-то конкретными номерами. Для этого у меня есть две функции, которые работают правильно и выполняют то, что я ожидал, но теперь у меня есть некоторые новые критерии. Вместо некоторых случайных идентификаторов, которыми не могут быть мои сгенерированные идентификаторы, я хочу сказать своей функции, что «не генерируйте идентификаторы, начинающиеся с 3, 4, 8». Как я могу это сделать?

Я не очень хорошо разбираюсь в vba, и мне может понадобиться много объяснений.

Function f1(search_value As Long, rng As Range)
    For i = 1 To rng.Count
        If rng.Cells(i, 1).Value = search_value Then
            f1 = True
            Exit Function
        End If
    Next i

    f1= False
End Function

Function f2(last_ID As Long, rng As Range)
    Dim newID As Long
    newID = last_ID + 1

    While f1(newID, rng)
        newID = newID + 1
    Wend

    f2 = newID
End Function

1 Ответ

0 голосов
/ 29 мая 2019

Вы можете сделать что-то вроде этого.

Function f1(search_value As Long, rng As Range)
    For i = 1 To rng.Count
        If rng.Cells(i, 1).value = search_value Then
            f1 = True
            Exit Function
        End If
    Next i

    f1 = False
End Function

Function genID(last_ID As Long, rng As Range)
    Dim newID As Long

    If Not Left(Len(last_ID + 1), 1) = 3 Or Left(Len(last_ID + 1), 1) = 4 Or Left(Len(last_ID + 1), 1) = 8 Then
        newID = last_ID + 1
    End If

    While f1(newID, rng)
        newID = newID + 1
    Wend

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