Как сделать так, чтобы поле ввода появлялось в VBA только при соблюдении определенных критериев?

Я пытаюсь настроить поле ввода, которое появится, если значение в определенной ячейке (I4) больше 0. Затем я хочу сделать так, чтобы, если в ячейке ничего не введено, пользователю было предложено введите информацию. Если пользователь нажмет кнопку отмены, макрос должен остановиться.

Sub testing123()

Re_Enter_FileImport:
FileImport = InputBox("File Not Yet Imported, Please Provide Reasoning")

If Range("I4") <> 0 Then
    Answer = FileImport

 'Code if user pressed cancel

If StrPtr(FileImport) = 0 Then
    Exit Sub

ElseIf FileImport = "" Then
    MsgBox "Please Provide Reasoning"
    GoTo Re_Enter_FileImport:
Else
End If

End Sub

Когда я пробую этот код, поле ввода появляется независимо от того, равна ли информация в ячейке I4 0 или нет. Кроме того, как мне определить, где будет введен ответ пользователя?


person Drewnick10    schedule 14.08.2019    source источник


Ответы (1)


Вы должны быть в состоянии выполнить это с помощью цикла Do While, который будет продолжаться до тех пор, пока пользователь не введет значение или не нажмет кнопку отмены. Кроме того, вы можете разместить их ответ там, где он вам нужен, с помощью свойства .Value.

Sub testing123()

Dim FileImport As String
Dim AnsBool As Boolean

AnsBool = True

If Range("A4") > 0 Then

    FileImport = InputBox("File Not Yet Imported, Please Provide Reasoning")

    Do While AnsBool
        If StrPtr(FileImport) = 0 Then Exit Sub
        If FileImport <> "" Then Exit Do
        MsgBox "Please Provide Reasoning"
        FileImport = InputBox("File Not Yet Imported, Please Provide Reasoning")
    Loop
End If

'You can change this to the range needed
Range("A1").Value = FileImport
End Sub
person TheJeebo    schedule 14.08.2019