Страница 1 из 1
Почему ВБ не вимдит числа типа 0,11
Добавлено: 09 дек 2005, 13:54
Legachoff
0,1 работает, а 0,11 уже нет почему
Sub ()
Dim r As Double
For r = 0.1 To 0.2
If ActiveSheet.Cells(4, 3).Value() = r Then ActiveSheet.Cells(4, 4).Value() = "ok"
Next r
End Sub
Добавлено: 09 дек 2005, 14:17
Игорь Акопян
Во-первых. Если в цикле не указан Step - то он равен 1
Во-вторых. Смысл Вашего цикла от меня ускользает

Написать ОК в соседней ячейке, если значение лежит в диапазоне? Или чего? Разъясните, пожалуйста.
!
Добавлено: 09 дек 2005, 14:40
Legachoff
Очень просто идет сравнение
если значение ячейки А1 допустим 2 то в В1 например пишет "1 бал"
если значение ячейки А1 допустим 3 то в В1 например пишет "2 бал"
и тд.
это не цикл, это в екселе присуждаеться по значению ранг клиента
Добавлено: 09 дек 2005, 15:04
Игорь Акопян
если это касается только одной ячейки (что вряд ли) я бы забил формулу =ЕСЛИ(...)
если же это условие надо проверить для диапазона ячеек, то я бы делал цикл по диапазону и в нём уже проверял условие на значение
Добавлено: 09 дек 2005, 15:21
Legachoff
Дело в том что проверка в одной ячейке идет по куче критериев, и надо сделать в ВБ
Добавлено: 09 дек 2005, 18:32
Игорь Акопян
Парочку критериев в студию - придумаем чего-нить

Добавлено: 09 дек 2005, 22:13
Oscar
VB не знаю, случайно проходил мимо, а потому ногами не пинать.
Код: Выделить всё
Sub ()
If ActiveSheet.Cells(4, 3).Value() >= 0.1 And ActiveSheet.Cells(4, 3).Value() <= 0.2 Then ActiveSheet.Cells(4, 4).Value() = "ok"
End Sub
так не пойдёт?
Добавлено: 12 дек 2005, 03:14
Naeel Maqsudov
0,1 работает, а 0,11 уже нет почему
Sub ()
Dim r As Double
For r = 0.1 To 0.2
If ActiveSheet.Cells(4, 3).Value() = r Then ActiveSheet.Cells(4, 4).Value() = "ok"
Next r
End Sub
Ну, про STEP в операторе FOR Вам уже сказали. Это, видимо, было главной проблемой.
Добавлю еще вот что. Сравнение значений типа Double и Single оператором "=" - это грубая ошибка. Допустим в ячейке которую Вы сравниваете с 0.1 находится формула. Наверняка она даст что-то типа 0.10000000000001 или 0.09999999999999 (ошибка округления в 15-ом значащем разряде). Это число не равно 0.1 и сравнение будет неуспешным.
Ну и напоследок хочу согласиться с Игорем Акопяном, по поводу функции ЕСЛИ.
Legachoff, давайте сюда Ваши критерии мы их в 2 счета
