powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Find не находит значение
15 сообщений из 15, страница 1 из 1
Find не находит значение
    #39967750
berzau
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Уважаемые форумчане, помогите понять, почему find не находит значение.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Sub checkcode()
Set s_R = Worksheets("Лист1")

s_R.Cells(3, 2) = 44409
s_R.Cells(4, 2) = 45409

offer_range_start = 3
offer_range_end = 4

'находим минимальное значение в диапазоне
settledatemin = Application.WorksheetFunction.Min(Range(s_R.Cells(offer_range_start, 2), s_R.Cells(offer_range_end, 2)))
'находим максимальное занчение в диапазоне
settledatemax = Application.WorksheetFunction.Max(Range(s_R.Cells(offer_range_start, 2), s_R.Cells(offer_range_end, 2)))

With s_R.Range(s_R.Cells(offer_range_start, 2), s_R.Cells(offer_range_end, 2))
Set rrange = .Find(what:=settledatemin, LookIn:=xlValues, lookat:=xlWhole)
If Not rrange Is Nothing Then

stmt = settledatemin

End If
End With

End Sub
...
Рейтинг: 0 / 0
Find не находит значение
    #39967756
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня находит. что я делаю не так?
...
Рейтинг: 0 / 0
Find не находит значение
    #39967762
berzau
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, а у меня почему-то не работает, причем есть две идентичные книги (созданы через копию), в одной аналогичный код работает, а в другой нет.
Создал новый файл (во вложении) там не работает, создал еще один новый файл и работает.
...
Рейтинг: 0 / 0
Find не находит значение
    #39967764
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в приложенном файле работает
...
Рейтинг: 0 / 0
Find не находит значение
    #39967768
berzau
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro,

В этом и вопрос, почему может не работать? Как так?
Я скачал приложенный файл и find ничего не находит.
...
Рейтинг: 0 / 0
Find не находит значение
    #39967770
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй сбросить параметры поиска

https://stackoverflow.com/questions/243368/reset-excel-find-and-replace-dialog-box-parameters
...
Рейтинг: 0 / 0
Find не находит значение
    #39967781
berzau
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, к сожалению, не помогло
...
Рейтинг: 0 / 0
Find не находит значение
    #39968138
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
berzau,

Код: vbnet
1.
Set rrange = .Find(what:=CDate(settledatemin), LookIn:=xlValues, lookat:=xlWhole)
...
Рейтинг: 0 / 0
Find не находит значение
    #39968178
berzau
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The_Prist, нет, все равно не сработал.

Проблема почему-то в Application.WorksheetFunction, так как если записать результат в ячейку и уже его присвоить переменной, то всё отлично срабатывает.

Код: vbnet
1.
2.
3.
settledatemin = Application.WorksheetFunction.Min(s_R.Range(s_R.Cells(offer_range_start, 2), s_R.Cells(offer_range_end, 2)))
Cells(1, 1) = settledatemin
settledatemin = Cells(1, 1)
...
Рейтинг: 0 / 0
Find не находит значение
    #39968216
berzau
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В итоге:
У кого-то код срабатывает в первоначальном варианте.

У кого-то срабатывает по варианту The_Prist

Код: vbnet
1.
Set rrange = .Find(what:=CDate(settledatemin), LookIn:=xlValues, lookat:=xlWhole)



У кого-то срабатывает вариант с изменением формата диапазона (у меня сработал именно он):

Код: vbnet
1.
s_R.Range(s_R.Cells(offer_range_start, 2), s_R.Cells(offer_range_end, 2)).NumberFormat = "General"
...
Рейтинг: 0 / 0
Find не находит значение
    #39968234
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
berzau,
проблема, вероятно, где-то между установкой локальных форматов и фактическими значениями в клетках.

Если у вас там на самом деле даты, то варианта в целом, два.
Если с find - то значение даты нужно привести к строке в фактическом формате, установленном для столбцов дат.

Либо ваять свою функцию поиска в столбце значения даты на массивах.
Тут тоже два варианта - при чтении value вы можете сравнивать прямо с датой, при чтении valu2 - дату нужно привести к double

Можно попробовать приведение даты к double при использовании find
Я не пробовал сам, это может и не работать...
...
Рейтинг: 0 / 0
Find не находит значение
    #39968294
ldfanate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у Find есть подобный прикол (емнип с 2002го офиса стал иногда не находить первое совпадение).
А почему не используете в коде функцию рабочего листа (ну тотже ВПР например), если поиск всего одного совпадения?
...
Рейтинг: 0 / 0
Find не находит значение
    #39968418
berzau
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
booby, так получилось, что теперь я не могу проверить ваше предположение, так как код по молчанию снова работает в любой книге.

boobyЕсли у вас там на самом деле даты, то варианта в целом, два.
Если с find - то значение даты нужно привести к строке в фактическом формате, установленном для столбцов дат.

я не очень понимаю, как это работает, так как в макросе не прописывался изначально формат.
При запуске в новой книге нет никаких форматов, значения проставляемые макросом имеют по умолчанию же общий формат, искомое значение берется из того списка с общим форматом.
...
Рейтинг: 0 / 0
Find не находит значение
    #39968425
berzau
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ldfanate, этот кусок макроса в задаче отвечает за поиск минимальной и максимальной даты из теоретически неограниченного списка и затем, получив адрес ячейки с минимальной датой, проверяет другие ячейки строки на предмет соответствия ряду критериев. В зависимости от результата берется строка с минимальным или максимальным значение.
Не очень представляю, как ВПР здесь может сработать.
...
Рейтинг: 0 / 0
Find не находит значение
    #39969198
ldfanate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторэтот кусок макроса в задаче отвечает за поиск минимальной и максимальной даты из теоретически неограниченного списка
find вообщето ищет точное совпадение значения в ячейке. То же самое делают функции рабочего листа ВПР и ПОИСКПОЗ - в зависимости от чего вам надо на выходе: наличие значения, или его местоположение в диапазоне ячеек. Т.е. вполне можно заменить вызов find на вызов worksheetfunction.

К тому же, динамически вычисляемый диапазон ячеек наверное тоже можно рассчитать используя функции рабочего листа МИН/МАКС, ПОИСКПОЗ и СМЕЩ.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Find не находит значение
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]