2016-05-04 8 views
2

У меня есть следующий простой код, который VBA оценивает неправильно (имхо) и я не могу понять его, даже после того, как поиск в Интернете широко:VBA оценивает> и <операторы неправильно

ElseIf TextBoxSNo.Value < 1 Then 
    MsgBox ("Please choose existing S.No") 
    Exit Sub 
ElseIf TextBoxSNo.Value > Cells(LastRow, 1).Value Then 
    MsgBox ("Please choose existing S.No") 
    Exit Sub 

Этот код ristricts значения можно ввести форму пользователя Excel. Он отлично работает, когда пользователь вводит значение ниже 1 или выше, чем ячейки (LastRow, 1) .Value.

Однако он также показывает мне сообщение об ошибке при вводе действительного значения. Как это может быть? Я даже проверил значения, которые оценивает код, распечатав их в MsgBox вместе с сообщением об ошибке. Кажется, что vba оценивает 5> 100 как истинный и выводит сообщение об ошибке.

Редактировать: Если я поддерживаю только первое заявление ElseIf, он работает так, как ожидалось. Только когда я добавляю второй ElseIf, он неправильно оценивает. LastRow определяется как Integer, поэтому я сравниваю числа с цифрами

Спасибо за любую помощь!

+2

Вы уверены, что вы сравниваете номера с номерами, а не числа со строками или что-то подобное? Попробуйте преобразовать все в числа перед сравнением. – moffeltje

+0

Я уверен, что оба числа. LastRow определяется как целое. –

+1

спасибо за очень быструю помощь. –

ответ

2

Один совет - используйте функцию Val() для любого выражения, чтобы убедиться, что вы сравниваете числа с числами. Val() возвращает 0, если выражение не может быть преобразовано, что также может быть полезно иногда.

-1

Хорошо, поэтому я использовал функцию val(), и она работает. Спасибо за совет!

знач (Cells (LastRow, 1) .Value)

действительно не понимаю, почему мне это нужно, хотя

Смежные вопросы