|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
19.12.2008, 10:41 | #1 |
Пользователь
Регистрация: 31.10.2007
Сообщений: 24
|
Макрос. Найти текущую дату в колонке через Find
Мне необходимо найти ряд, в котором находится текущая дата через Find. Данные находятся в первой колонке.
Подскажите как правильно написать код, а то следующее не работает? Код:
|
19.12.2008, 11:28 | #2 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Метод Find в данном случае может работать некорректно...
Попробуйте такой код: Код:
Код:
и попытка получить свойство Row отсутствующего объекта и вызывает ошибку. Кроме того, Ваш макрос найдет дату только в том случае, если она записана в ячейку в том же виде, в каком её возвращает функция Date (в моём случае это формат dd.mm.yyyy) То есть если в ячейке содержится дата в виде 19 декабря 2008, то макрос ничего не найдет. (он найдёт только дату 19.12.2008) Мой же вариант макроса осуществит поиск корректно. Если же в столбце 1 может присутствовать несколько ячеек с текущей датой, и необходимо выделить все эти ячейки, то макрос надо будет немного изменить.
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
Макросы любой сложности на заказ. Мониторинг цен конкурентов Последний раз редактировалось EducatedFool; 19.12.2008 в 11:42. |
19.12.2008, 12:25 | #3 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
EducatedFool абсолютно прав. Дело в том, что метод Find ищет ячейки "как есть", т.е. если сегодняшнюю дату написать в разных форматах, то отыщется лишь та ячейка, в которой совпадают формат ячейки и формат функции Date.
Избавиться от этой "заморочки" поможет цикл по строкам нужного столбца. При этом можно, например, сравнивать значение ячейки с CStr(Date). Предварительно, лучше вставить проверку IsDate(текущая ячейка).
Чем шире угол зрения, тем он тупее.
|
19.12.2008, 16:51 | #4 |
Пользователь
Регистрация: 31.10.2007
Сообщений: 24
|
Спасибо большое! Это очень познавательно.
Вы мне очень помогли, буду использовать тогда ваш вариант. |
19.12.2008, 17:02 | #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 Это вместо переноса строки можно вставлять? |
19.12.2008, 17:06 | #6 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
Например, Ваш макрос можно записать одной строкой: Код:
Но, к примеру, в случае с таким кодом: Код:
То есть запихнуть этот код в 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 |