Ох уж эта точка - запятая!

Программирование на Visual Basic for Applications
Estilla
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 27.09.2006 (Ср) 21:07
Откуда: Москва

Ох уж эта точка - запятая!

Сообщение Estilla » 29.09.2006 (Пт) 19:44

Вот столкнулся с такой заморочкой:
Не хочет искать число 286,45 в диапазоне. Кричит с ошибкой №91.
Код: Выделить всё

Public Sub ww()
Dim decc As Double
Dim ssss As Double
decc = 0.45
ssss = 286 + decc
Range("A1:A30").Find(What:=ssss, LookIn:=xlValues, LookAt:=xlWhole).Select
End Sub

Нашел выход только если в последней строчке после What:=
написать не ssss, а
Код: Выделить всё
CStr(ssss)
.
Не могу понять что ему не нравиться. В хелпе написано что поле What может содержать любой тип данных экселя. В книжке прочитал про ошибку. Сказано, что "переменная блока With не установлена или когда создается ссылка на объект рабочего листа, а в это время активен лист диаграммы". Но как это с моим случаем соотносится, не могу понять. Помогите плиз разобраться.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 29.09.2006 (Пт) 21:30

91 в данном случае означает "не найдено".

Не найдено, видимо, потому, что такого точно числа на листе нет. А когда строкой, то используется обрубленная экранная точность...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Estilla
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 27.09.2006 (Ср) 21:07
Откуда: Москва

Сообщение Estilla » 30.09.2006 (Сб) 1:31

GSerg писал(а):91 в данном случае означает "не найдено".

Не найдено, видимо, потому, что такого точно числа на листе нет. А когда строкой, то используется обрубленная экранная точность...


число то есть и точно такое же. А что такое "экранная точность"?
Прикол еще в том, что первоначальный код (без CStr) работал, а потом вдруг перестал: перестал находить числа.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 30.09.2006 (Сб) 1:34

Если число есть, оно найдётся.

Можно приложить файл для примера.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Estilla
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 27.09.2006 (Ср) 21:07
Откуда: Москва

Сообщение Estilla » 30.09.2006 (Сб) 18:00

вот файл. пока файл создавал, стал находить без использования CStr
Вложения
tochka.xls
(20.5 Кб) Скачиваний: 54

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 30.09.2006 (Сб) 18:04

Находит нормально.

А вообще, сравнивать чиссла с плавающей точкой на равенство нельзя.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Estilla
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 27.09.2006 (Ср) 21:07
Откуда: Москва

Сообщение Estilla » 30.09.2006 (Сб) 19:13

GSerg писал(а):Находит нормально.

А вообще, сравнивать чиссла с плавающей точкой на равенство нельзя.


Что значит нельзя? А что делать тогда, если нужно выбрать? :shock:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 30.09.2006 (Сб) 19:21

Estilla писал(а):Что значит нельзя?

http://bbs.vbstreets.ru/viewtopic.php?t=20753

Estilla писал(а):А что делать тогда, если нужно выбрать? :shock:

Искать строку, созданную с конечной точностью.
Или не применять xlWhole.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Estilla
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 27.09.2006 (Ср) 21:07
Откуда: Москва

Сообщение Estilla » 30.09.2006 (Сб) 19:40

Estilla писал(а):А что делать тогда, если нужно выбрать? :shock:
Искать строку, созданную с конечной точностью.
Или не применять xlWhole.

так у меня конечная точность. Не больше двух знаков после запятой.
А если не применять xlWhole, то при поиске 286.1 будет находить и 286.15

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 30.09.2006 (Сб) 19:55

Estilla писал(а):так у меня конечная точность. Не больше двух знаков после запятой.

Ссылка, которая в предыдущем ответе... там написано, почему так не бывает.

Значит искать строку.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Estilla
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 27.09.2006 (Ср) 21:07
Откуда: Москва

Сообщение Estilla » 30.09.2006 (Сб) 20:57

GSerg писал(а):
Estilla писал(а):так у меня конечная точность. Не больше двух знаков после запятой.

Ссылка, которая в предыдущем ответе... там написано, почему так не бывает.

Значит искать строку.


Да вы поймите, у меня ситуация, когда то число находит, то число в виде строки, всегда по-разному.
Выход вижу только при обычным If-ом сравнивать строки а потом через CDbl выводить число.
У меня ощущение, что функция Find глючит.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 30.09.2006 (Сб) 21:03

Число в виде строки не находит всегда?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Estilla
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 118
Зарегистрирован: 27.09.2006 (Ср) 21:07
Откуда: Москва

Сообщение Estilla » 30.09.2006 (Сб) 22:56

GSerg писал(а):Число в виде строки не находит всегда?

как было замечено позже, ДА, не находит. И не могу понять с чем это связано. Ничего и нигде в настройках не менял.


Вернуться в VBA

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

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

    TopList