Страницы: 1
RSS
Нажатие кнопки "Отмена"  в условии проверки пароля через InputBox
 
ребята подскажите! как прописать в условии проверки работу кнопки отмены
Код
............
Dim Pass As String
Dim a As Long
a = 3
Do
Pass = InputBox("Message", , Default, "111")

Select Case Pass
    Case "": MsgBox "поле пустое"
    Case Is <> a: MsgBox "пароль не верный"
    Case Is = a: MsgBox "правильно": UserForm1.Show
Exit Do
End Select
Loop
...........

Case StrPtr(Pass) = 0: MsgBox "нажата кнопка отмена"  , так не получается

заранее спасибо!
НЕ БОГИ ГОРШКИ ОБЖИГАЮТ
 
Дмитрий Дунаев, для ввода пароля не следует использовать InputBox. Лучше форму и там TextBox у которого PasswordChar установлен.
По вопросам из тем форума, личку не читаю.
 
БМВ, дело не в  проверке пароля а в работе функции case
НЕ БОГИ ГОРШКИ ОБЖИГАЮТ
 
Цитата
Дмитрий Дунаев написал:
а в работе функции case
вот те раз, а тогда при каких делах кнопка отмены?
ну ладно, отмена даст "" , равносильно тому что оставить пустую строку.
вот что Вы  в этом Pass = InputBox("Message", , Default, "111") этим , , Default, хотели сказать ?
Изменено: БМВ - 17.03.2019 00:54:32
По вопросам из тем форума, личку не читаю.
 
Цитата
Дмитрий Дунаев написал:
работу кнопки отмены
читать внимательно раздел, посвященный работе с InputBox: Работа с диалогами
Там я как раз описывал как отловить именно нажатие кнопки Отмена, а не пустое поле
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Дмитрий Дунаев написал:
Case StrPtr(Pass) = 0: MsgBox "нажата кнопка отмена"   , так не получается
и не получится, потому что в саму инструкцию Select Case что передаете?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, не судите строго но заморачиватся не стал:
Код
Dim Pass As String
Dim a As Long
a = 3
Do
Pass = InputBox("Message", , , "111")
If StrPtr(Pass) = 0 Then
    MsgBox "Нажата кнопка Отмена. Процедура прервана", vbCritical, "DelCols"
    Exit Sub
End If
Select Case Pass
    Case Is = "": MsgBox "Строка пустая"
    Case Is <> a: MsgBox "пароль не верный"
    Case Is = a: MsgBox "пароль верный": UserForm1.Show
Exit Do
End Select
Loop
только вот все таки хотелось бы понять как работать это будет в процедуре Casse
НЕ БОГИ ГОРШКИ ОБЖИГАЮТ
 
БМВ, извиняюсь не сразу понял вопрос, Default? да в общем ни чего , подразумевалось как стандартный набор для инпутбокса
Изменено: Дмитрий Дунаев - 17.03.2019 12:10:01
НЕ БОГИ ГОРШКИ ОБЖИГАЮТ
 
Цитата
Дмитрий Дунаев написал:
хотелось бы понять как работать это будет в процедуре Casse
Код
Sub qqq()
Dim strInput As String
    strInput = InputBox("")
    Select Case StrPtr(strInput)
        Case Is = 0
        MsgBox "Вы нажали Cancel!"
        Case Else
        MsgBox "Cancel не нажата."
    End Select
End Sub

 
Цитата
Дмитрий Дунаев написал:
как работать это будет в процедуре Casse
Код
Select Case True
Case StrPtr(Pass) = 0
    MsgBox "Нажата кнопка Отмена. Процедура прервана", vbCritical, "DelCols"
    Exit Sub
Case Pass = "": MsgBox "Строка пустая"
Case Pass  <> a: MsgBox "пароль не верный"
Case Pass  = a: MsgBox "пароль верный": UserForm1.Show
End Select
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Юрий М, т.е это как отдельная процедура?
НЕ БОГИ ГОРШКИ ОБЖИГАЮТ
 
Что значит отдельная? Вставьте фрагмент с Select Case - End Select в свою процедуру )
 
вот что получилось и работает так как задумано, спасибо вам ребята всем, буду досконально изучать данную тему!
Код
Dim Pass As String
Dim a As Long
a = 3
Do
Pass = InputBox("Введите пароль", "Информация", , "111")
Select Case True 'начало блока процедуры проверяет на "правда" внутри процедуры
    Case StrPtr(Pass) = 0 'процедура проверяет нажата ли кнопка отмена"
    MsgBox "Нажата кнопка Отмена. Процедура прервана", vbCritical, "DelCols"
    Exit Sub
    Case Pass = "": MsgBox "Строка пустая" 'проверяет пустое поле
    Case Pass <> a: MsgBox "пароль не верный" 'сравнивает больше или меньше значение находится в строке
    Case Pass = a: MsgBox "пароль верный": UserForm1.Show
Exit Do
End Select
Loop
Изменено: Дмитрий Дунаев - 17.03.2019 13:54:24
НЕ БОГИ ГОРШКИ ОБЖИГАЮТ
Страницы: 1
Наверх