Страницы: 1
RSS
Автофильтр таблицы через VBA
 
Добрый день уважаемые...  
Просьба разъяснить как побороть такую проблему если кто сталкивался...  
Есть таблица с данными во втором столбце которого у меня указаны даты событий.  
Мне необходимо провести фильтр данных находящихся между двумя датами.  
 
Написал такой макрос:  
Private Sub ApplyBtn_Click()  
   startStr = ">=" + txtStartDate.Value  
   finStr = "<=" + txtFinDate.Value  
   ActiveSheet.ListObjects("TblMove").Range.AutoFilter Field:=2, Criteria1:= _  
       startStr, Operator:=xlAnd, Criteria2:=finStr  
OtchetSort.Hide  
End Sub  
 
где txtStartDate.Value и txtFinDate.Value поля в UserForm в которых указываются даты периода.  
 
У меня сворачивается вся таблица (( после нажатия автофильтра уже через эксель и проверки параметров этого фильтра я вижу что фильт в экселе записан правильно и при нажатии окей автофильтр выполняется и появляются данные которые мне необходимы.  
 
Кто сталкивался с таким подскажите в чем проблема?  
startStr = ">=" + txtStartDate.Value - записал так потому что при записи макроса моих действий я получаю именно такую строчку в VBA т.е. Критерии являются строковыми.    
 
Может быть в этом проблемма?
 
ActiveSheet.ListObjects("TblMove").Range.AutoFilter Field:=2, Criteria1:= _  
">=" & Cdate(txtStartDate.Value)
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Проблема не устранилась (  
Так же сворачивает все но поле через эксель заполнены правильно и при нажатии окей в автофильтре он срабатывает ((
 
Данные в UserForm всегда будут текстовым. Попробуйте брать критерии из ячеек, где действительно даты.
 
{quote}{login=Юрий М}{date=03.08.2011 02:54}{thema=}{post}Данные в UserForm всегда будут текстовым. Попробуйте брать критерии из ячеек, где действительно даты.{/post}{/quote}  
Ну так Cdate(txtStartDate.Value)и есть преобразование текста в дату...  
У меня подобным образом и заполняется данные в таблице...  
 
Или вы предлагаете сначала записать адты в ячейки в формате даты а потом оттуда их брать?
 
Я предлагаю попробовать :-) сначала просто введите даты в ячейки, а потом, когда сработает - из формы в ячейку. Не получится - скажете - совет не помог :-)
 
Критерий автофильтра в VBA - тема глубокая и интересная :)  
В частности:    
http://www.planetaexcel.ru/forum.php?thread_id=3610  
http://www.planetaexcel.ru/forum.php?thread_id=15988  
http://www.planetaexcel.ru/forum.php?thread_id=28095  
 
=34675=
 
К сожалению не помогло ((
 
Собственно, и я забыл, все даты в Excel - это числа)  
 
По теме, Вам Казанский уже ответил:  
 
startStr = ">=" & CLng(CDate(txtStartDate.Value))
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
{quote}{login=Казанский}{date=03.08.2011 03:04}{thema=}{post}Критерий автофильтра в VBA - тема глубокая и интересная :){/post}{/quote}  
 
Большое спасибо реально интересная особенность с типом данных сам бы не догадался ((  
Вот моя итоговая строка автофильтра  
ActiveSheet.ListObjects("TblMove").Range.AutoFilter Field:=2, Criteria1:= _  
   ">=" & CLng(CDate(txtStartDate.Value)), Operator:=xlAnd, Criteria2:="<=" & CLng(CDate(txtFinDate.Value))  
 
Всем спасибо
Страницы: 1
Читают тему
Наверх