Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Условие срабатывает всегда (код ниже), почему?

78K
06 августа 2013 года
EsEr
20 / / 17.02.2013
Условие IF ...Then срабатывает всегда, каково бы ни было значение cifra(отслеживал по дебаггеру(Immediate window) значения).Почему? Заметно это еще и по затиранию нажатой клавиши, то есть вывода на экран любой нажатой клавиши нет.
 
Код:
Private Sub TextBox17_KeyPress(ByVal keyAscii As MSForms.ReturnInteger)
Call keyup(keyAscii)
End Sub
Public Sub keyup(keyAscii)
Dim cifra As Integer
cifra = keyAscii
If (cifra <> 48) Or (cifra <>49) Or (cifra <> 50) Or (cifra <> 51) Or (cifra <> 52) _
        Or (cifra <> 53) Or (cifra <> 54) Or (cifra <> 55) Or (cifra <> 56) _
        Or (cifra <> 57) Or (cifra <> 44) Or (cifra <> 46) Then   SendKeys "{bs}"
End Sub
91K
06 августа 2013 года
default7
1 / / 06.08.2013
потому что учите бинарную логику.
если true or false = true. а у вас 1 хоть раp true будет. например cifra = 53 - условие (cifra <>49) = true
275
06 августа 2013 года
pashulka
985 / / 19.09.2004
В таких случаях вполне можно использовать Select Case ... т.е.

 
Код:
Private Sub TextBox17_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    FilterKeyUp KeyAscii
End Sub

Public Sub FilterKeyUp(myKeyAscii As MSForms.ReturnInteger)
    Select Case myKeyAscii
        Case 44, 46, 48 To 57
        Case Else: SendKeys "{bs}"
    End Select
End Sub
78K
08 августа 2013 года
EsEr
20 / / 17.02.2013
Цитата: pashulka
В таких случаях вполне можно использовать Select Case ... т.е.

 
Код:
 


Спасибо за подсказку, совсем про него забыл.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог