![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 31.10.2007
Сообщений: 24
|
![]()
Мне необходимо найти ряд, в котором находится текущая дата через Find. Данные находятся в первой колонке.
Подскажите как правильно написать код, а то следующее не работает? Код:
|
![]() |
![]() |
#2 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]()
Метод Find в данном случае может работать некорректно...
Попробуйте такой код: Код:
Код:
и попытка получить свойство Row отсутствующего объекта и вызывает ошибку. Кроме того, Ваш макрос найдет дату только в том случае, если она записана в ячейку в том же виде, в каком её возвращает функция Date (в моём случае это формат dd.mm.yyyy) То есть если в ячейке содержится дата в виде 19 декабря 2008, то макрос ничего не найдет. (он найдёт только дату 19.12.2008) Мой же вариант макроса осуществит поиск корректно. Если же в столбце 1 может присутствовать несколько ячеек с текущей датой, и необходимо выделить все эти ячейки, то макрос надо будет немного изменить.
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
![]() Последний раз редактировалось EducatedFool; 19.12.2008 в 11:42. |
![]() |
![]() |
#3 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
![]()
EducatedFool абсолютно прав. Дело в том, что метод Find ищет ячейки "как есть", т.е. если сегодняшнюю дату написать в разных форматах, то отыщется лишь та ячейка, в которой совпадают формат ячейки и формат функции Date.
Избавиться от этой "заморочки" поможет цикл по строкам нужного столбца. При этом можно, например, сравнивать значение ячейки с CStr(Date). Предварительно, лучше вставить проверку IsDate(текущая ячейка).
Чем шире угол зрения, тем он тупее.
|
![]() |
![]() |
#4 |
Пользователь
Регистрация: 31.10.2007
Сообщений: 24
|
![]()
Спасибо большое! Это очень познавательно.
Вы мне очень помогли, буду использовать тогда ваш вариант. |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 31.10.2007
Сообщений: 24
|
![]()
Очень любопытно что такое двоеточие (
![]() dn = DateValue(Now): Row = 0 cv = cell.Value: If IsDate(cv) Then If cv = dn Then cell.EntireRow.Activate: Row = cell.Row Это вместо переноса строки можно вставлять? |
![]() |
![]() |
#6 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]() Цитата:
Например, Ваш макрос можно записать одной строкой: Код:
Но, к примеру, в случае с таким кодом: Код:
То есть запихнуть этот код в 2 строки ещё можно: Код:
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
![]() Последний раз редактировалось EducatedFool; 19.12.2008 в 17:15. |
|
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Макрос, расширяющий функцию Find | neugadal | Microsoft Office Word | 5 | 29.09.2008 08:32 |
Как получить текущую дату из SQL запроса? | _ozzy_ | SQL, базы данных | 2 | 09.09.2008 21:15 |
Макрос: удаление строк если в колонке А число 5 | Dorvir | Microsoft Office Excel | 22 | 15.02.2008 06:25 |
Проверить через макрос - открыта ли книга? | Nikson_iii | Microsoft Office Excel | 1 | 26.09.2007 08:35 |