|
Макрос + Расширенный фильтр + Даты = Тупик
|
|||
---|---|---|---|
#18+
Прошу помочь разобраться. Хочу применить расширенный фильтр к датам. Делаю самим Экселем: Данные - расширенный фильтр, далее по тексту... Всё получается! Пробую в ячейки критериев ввести точно такую же информацию через поля формы - выдаёт ошибку. Проблема явно в представлении (формате) даты. Но почему Эксель в одном случае умеет интерпретировать текстовую строку, а в другом нет? На компе у меня установлены региональные настройки dd.mm.yy, но независимо от этого, Эксель примет через окна формы формат: mm/dd/yy или шизоидный вариант: 41234, а мой родной: dd.mm.yy игнорирует. Очень хочется вводить критерии даты, через textboxы формы. Файл (.xlsb) с примером прилагаю. Спасибо за ответы. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2013, 12:46 |
|
Макрос + Расширенный фильтр + Даты = Тупик
|
|||
---|---|---|---|
#18+
Valll, Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2013, 21:03 |
|
Макрос + Расширенный фильтр + Даты = Тупик
|
|||
---|---|---|---|
#18+
Спасибо за пример. Идея разделить условие от даты, а дату преобразовать приходила мне в голову, но есть два пункта по которым я отказался: 1. В одном textboxe должно быть записано условие полностью как текстовая строка. 2. В конце концов могут быть не только даты, но и текст и числа. Можно конечно отыскивать в строке спецзнаки, потом преобразовывать дату в определённый формат, но как-то это всё на "помочах"... Непонятно само явление: от руки вношу в ячейку условия - всё считает, те же условия через макрос - ошибка! Но видимо придётся "городильню городить" с препарированием строки внесённой в текстбокс. Спасибо за поддержку. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2013, 23:00 |
|
Макрос + Расширенный фильтр + Даты = Тупик
|
|||
---|---|---|---|
#18+
Valll, Чтобы понимали, почему при фильтрации вручную работает, а из VBA нет: Как Excel воспринимает данные? Я так полагаю, что в Расширенном фильтре присутствует парсинг данных ячеек с критериями. Примерно, по простому можно сделать так: Код: 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. 25. 26.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2013, 23:53 |
|
Макрос + Расширенный фильтр + Даты = Тупик
|
|||
---|---|---|---|
#18+
The_Prist Ловко вы на хирургический стол положили TextBox! Про числовое значение даты известно и понятно, непонятно - почему сам Эксель правильно интерпретирует текстовую строку ">01.01.13", а его же примочка VBA спотыкается. Явный косяк, чтобы кто не говорил. И мой пример явное тому подтверждение. Вообщем, чтобы не городить "байду", а с учётом 40-ка реальных текстбоксов - это значит ещё и с циклами и проверками каждого знака... я решил кардинально - написал следующее примечание пользователям: "ВНИМАНИЕ! При написании даты нельзя использовать формат: dd.mm.yy (yyyy). Вам придётся применять уродливый формат США: mm/dd/yy (yyyy). Иначе расширенный фильтр Excel с макросом не работает." Вот и решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2013, 00:08 |
|
Макрос + Расширенный фильтр + Даты = Тупик
|
|||
---|---|---|---|
#18+
ValllЭксель правильно интерпретирует текстовую строку ">01.01.13", а его же примочка VBA спотыкаетсяВалерий, VBA - это не "примочка" Excel, а язык программирования для всего офиса и не только :) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2013, 00:47 |
|
Макрос + Расширенный фильтр + Даты = Тупик
|
|||
---|---|---|---|
#18+
Сергей, привет! Да я понимаю. Это я так от обиды. Дальше хуже. Если вставить даты (>01.01.13) через форму, а потом средствами Экселя отфильтровать, то всё как положено - фильтруется! Значит косяк именно В VBA, он явно не понимает локальных настроек компьютера, локализованной версии Excel. Может есть какой оператор, который как-то подскажет VBA, что надо использовать локальные настройки? Конечно проблема пустяшная. Просто думал как-то облагородить расширенный фильтр с помощью формы, чтобы удобнее было фильтры формировать, там проверки, подставки и т.д. Но не срослось... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2013, 11:31 |
|
Макрос + Расширенный фильтр + Даты = Тупик
|
|||
---|---|---|---|
#18+
Valll, Нет ничего такого. Если Вы макросом заносите дату(>01.01.13) - то она все равно ТЕКСТ. И уже в алгоритмах Расширенного фильра этот текст парсится и из него извлекается дата, в зависимости от локальных настроек и настроек глобальных(>01/01/13). VBA же не имеет разных локализаций - он распространяется лишь на английском для всех локализаций Excel. Следовательно он может опрерировать в полной мере верно типами данных только этой локали. И вызывает он расширенный фильтр Excel, передавая типы согласно своей локали, а не опираясь на локаль Excel. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2013, 12:22 |
|
|
start [/forum/topic.php?fid=61&msg=38274588&tid=2174783]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 378ms |
total: | 503ms |
0 / 0 |