1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | Если при вызове функции InputBox, Вам необходимо отследить нажатия кнопок в диалоговом окне, т.е. определить, была ли нажата кнопка ОК в т.ч. и с пустым полем, или пользователь действительно кликнул кнопку Отмена или Закрыть [X], то: Вариант Dim iResult As String iResult = InputBox( _ Prompt:="Введите необходимый текст", Title:="Моя программа") If VBA . StrPtr(iResult) <> 0 Then MsgBox "Пользователь нажал кнопку Ok", , "" Else MsgBox "Пользователь нажал кнопку Отмена/Закрыть", , "" End If Если же Вас интересует состояние текстового поля, проще говоря, заполнен или нет Edit, то: Dim iResult As String iResult = InputBox( _ Prompt:="Введите необходимый текст", Title:="Моя программа") If VBA . StrPtr(iResult) = 0 Then MsgBox "Пользователь нажал кнопку Отмена/Закрыть" Else If iResult = "" Then ' If Len(iResult) = 0 Then MsgBox "Пользователь ничего не ввёл, однако нажал кнопку Ok" Else MsgBox "Нажали кнопку Ok , предварительно заполнив : " & iResult End If End If Вариант. Решить поставленную задачу также можно с помощью метода .InputBox объекта Application code: #vba Dim iResult ' As Variant iResult = Application . InputBox( Type := 2 , _ Prompt:="Введите необходимый текст", Title:="Моя программа") If iResult = False Then MsgBox "Пользователь нажал кнопку Отмена/Закрыть" Else If iResult = "" Then ' If Len(iResult) = 0 MsgBox "Пользователь ничего не ввёл и нажал кнопку Ok" Else MsgBox "Пользователь ввёл : " & iResult End If End If Dim iResult As Variant iResult = Application . InputBox( Type := 2 , _ Prompt:="Введите необходимый текст", Title:="Моя программа") Select Case iResult Case False MsgBox "Пользователь нажал кнопку Отмена/Закрыть" Case "" MsgBox "Пользователь ничего не ввёл и нажал кнопку Ok" Case Else MsgBox "Пользователь ввёл : " & iResult End Select |