Почему ВБ не видит числа типа 0,1

Программирование на Visual Basic for Applications
Legachoff
Обычный пользователь
Обычный пользователь
 
Сообщения: 75
Зарегистрирован: 14.10.2005 (Пт) 15:09

Почему ВБ не видит числа типа 0,1

Сообщение Legachoff » 09.12.2005 (Пт) 12:09

Dim r As Integer
For r = 0.1 To 0.2
If ActiveSheet.Cells(4, 3).Value() = r Then ActiveSheet.Cells(4, 4).Value() = "ok"

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 09.12.2005 (Пт) 12:18

Потому что такого числа нет.
Lasciate ogni speranza, voi ch'entrate.

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 09.12.2005 (Пт) 13:02

Читаем хелп, что такое Integer. Также читаем хелп, как правильно писать цикл For... Next.
Быть... или не быть. Вот. В чём вопрос?

Legachoff
Обычный пользователь
Обычный пользователь
 
Сообщения: 75
Зарегистрирован: 14.10.2005 (Пт) 15:09

!

Сообщение Legachoff » 09.12.2005 (Пт) 13:13

0,1 видит, а 0,11 уже нет Я идиот! Убейте меня, кто-нибудь!??

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 09.12.2005 (Пт) 14:31

мля...
Быть... или не быть. Вот. В чём вопрос?

Legachoff
Обычный пользователь
Обычный пользователь
 
Сообщения: 75
Зарегистрирован: 14.10.2005 (Пт) 15:09

Я идиот! Убейте меня, кто-нибудь!??

Сообщение Legachoff » 09.12.2005 (Пт) 15:31

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
идет сравнение
если значение ячейки А1 допустим 2 то в В1 например пишет "1 бал"
если значение ячейки А1 допустим 3 то в В1 например пишет "2 бал"
и тд.
проверка в одной ячейке идет по куче критериев, и как это сделать в ВБ

Wasup!
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 21.06.2005 (Вт) 11:09

Сообщение Wasup! » 09.12.2005 (Пт) 16:08

Нужно в цикл добавить шаг:
Код: Выделить всё
Sub ()
Dim r As Double
For r = 0.1 To 0.2 Step 0.01
If ActiveSheet.Cells(4, 3).Value() = r Then ActiveSheet.Cells(4, 4).Value() = "ok"
Next r
End Sub

Legachoff
Обычный пользователь
Обычный пользователь
 
Сообщения: 75
Зарегистрирован: 14.10.2005 (Пт) 15:09

Сообщение Legachoff » 09.12.2005 (Пт) 17:03

Thanx !!!

hohol_kz
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 05.08.2005 (Пт) 6:21

Сообщение hohol_kz » 12.12.2005 (Пн) 10:03

А зачем все это так? :shock:

В модуль пишешь (Вариант для сравнения с любым числом и выдачи "Да/Нет"):

Код: Выделить всё
Function <Имя_функции>(A as Double) as String
    Select Case A
    ' Тут будет куча условий
    ' Если же тебе надо <=7 условий, то юзай стандартную функцию ЕСЛИ()
    ' без всякого программирования вообще, т.к. она допускает 7 уровней вложенности.
    Case 0.1
        <Имя_функции>="Да" ' Проверяй соответствие типам
    Case 0.2
        <Имя_функции>="Я в ступоре"
    Case 0.3
        <Имя_функции>="Нет" ' и так далее
    ...
    Case 100000
        <Имя_функции>="БЕбебебебебебе"
    End Select
End Function

Можно внутри функции юзать вместо Select Case:
Код: Выделить всё
IF...Then
Iif()
Switch()

дело вкуса и по обстоятельствам.

У тебя получается простая пользовательская функция, причем не привязанная к ячейке. Ты можешь результат выводить где тебе удобно. Юзаешь ее как любую другую функцию в Excel
Можно еще усложнить дело и сравнивать с задаваемым как аргумент диапазоном значений и соответственно поступать.
На правах саморекламмы: "Кофейник" - это тот же "чайник", только круче.

hohol_kz
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 05.08.2005 (Пт) 6:21

Сообщение hohol_kz » 12.12.2005 (Пн) 10:15

Кстати в исходном вопросе, как отметили все, куча ошибок:
1. тип Integer - целые (не касаемся пока что допустимого диапазона), а присвоить ему пытаешься Single или Double (т.е. дробные), что есть ошибка.
2. Цикл пускаешь в диапазоне < еденицы, но не указываешь шаг, а по умолчанию он равен 1, что выходит за указанный тобой диапазон.
3. Не закрываешь цикл с помощью Next r.

Короче, читать, читать и читать, причем не только программирование, но и школьный курс математики (про числа)
На правах саморекламмы: "Кофейник" - это тот же "чайник", только круче.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 103

    TopList