Цикл с InputBox, пока не будет написана уникальная ссылка - PullRequest
0 голосов
/ 28 июня 2019

У меня проблема с циклом. Я начинаю с этого и не могу заставить его работать правильно.

У меня есть макрос, который создает поле ввода для получения уникальной ссылки. Затем макрос проверяет, используется ли ссылка в диапазоне. Если да, он говорит, где и попросил пользователя использовать другую ссылку.

Я пробовал несколько разных кодов, но не могу заставить его работать хорошо. Это продолжается, даже если ссылка не уникальна или она повторяется снова и снова, даже если ссылка уникальна ... Думаю, я не разместил свой код там, где он должен быть.

Не могли бы вы помочь мне решить эту проблему?

    Set Rng = Range("A1:A100")
reference = InputBox("What is the reference  ? (Example : UN.2019.04.31)", "Reference required")
ActiveCell.FormulaR1C1 = reference
SearchString = reference

For Each aCell In Rng
    If InStr(1, aCell.Value, SearchString, vbTextCompare) Then
        MsgBox "This reference is already used at line " & aCell.Address
        ActiveCell.FormulaR1C1 = "REFERENCE ALREADY USED"
    End If
Next
reference = InputBox("Please chose another reference.", "Reference")

Do Until Range("A" & ActiveCell.Row).Value <> "REFERENCE ALREADY USED"
    For Each aCell In Rng
        If InStr(1, aCell.Value, SearchString, vbTextCompare) Then
            MsgBox "This reference is already used at line " & aCell.Address
            ActiveCell.FormulaR1C1 = "REFERENCE ALREADY USED"
            reference = InputBox("Please chose another reference.", "Reférence")
            ActiveCell.FormulaR1C1 = reference
        End If

    Next
Loop

PS: почему я не могу сказать привет перед публикацией? (Каждый раз, когда я редактирую, оно удаляет само слово)

1 Ответ

0 голосов
/ 28 июня 2019

Вам не хватает выхода для, когда условие выполнено.Например, вот как должен быть верх для цикла.

For Each aCell In Rng
    If InStr(1, aCell.Value, SearchString, vbTextCompare) Then
        MsgBox "This reference is already used at line " & aCell.Address
        ActiveCell.FormulaR1C1 = "REFERENCE ALREADY USED"
        Exit For
    End If
Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...