Страница: 1 |
|
Вопрос: Опять автофильтр
|
Добавлено: 10.07.08 15:01
|
|
Автор вопроса: KiZ
|
Доброго времени суток. Опять у меня проблемы все с теми же автофильтрами.
Прошлая тема: http://www.vbnet.ru/forum/show.aspx?id=167130
Так я и не получил вразумительного ответа почему не хочет работать. Избавился от нее через другой выбор и вот опять.
Проблема такая:
SevData = "01.03.2005"
Workbooks.OpenText Filename:= _
"X:\lot.txt", Origin:=xlMSDOS, _
StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), Array(10 _
, 1), Array(15, 1), Array(22, 1), Array(27, 1), Array(41, 1), Array(55, 1), Array(69, 1), _
Array(83, 1), Array(97, 1), Array(111, 1), Array(120, 1), Array(136, 1), Array(149, 1), _
Array(162, 1), Array(174, 1), Array(213, 1), Array(227, 1), Array(239, 1), Array(245, 1), _
Array(249, 1)), TrailingMinusNumbers:=True
'(cut)
Columns("A:A").Select
Selection.Replace What:="-", Replacement:=".", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
' Selection.NumberFormat = "m/d/yyyy"
With Selection
.HorizontalAlignment = xlCenter
.Orientation = 0
.AddIndent = False
.ShrinkToFit = False
.MergeCells = False
End With
В первом столбце содержаться даты вида:
1-08-2008 или 21-08-2008 (т.е. через тире и без нулей спереди, если дата до 10 )
Делаю такую махинацию со столбцом. Вроде все ровно и даты впорядке.
Далее делаю вот это:
Selection.AutoFilter Field:=16, Criteria1:="=*СОК*", Operator:=xlAnd
Selection.AutoFilter Field:=1, Criteria1:="<" & SevData
И опять после первого автофильтра все в порядке, после 2ого исчезают все строки.
Останавливаю макрос, выбираю условие первого столбца, там все как надо. нажимаю ENTER ячейки на месте, хотя до этого их не было.
Кстати, и жто главное, что фильтр не хочет работать даже так(т.е. вместо переменной конкретная дата):
Selection.AutoFilter Field:=1, Criteria1:="<21.03.2005"
Подозрение, что в формате дела....(Win 2000/XP, Exel 2003(и в той и втой винде не хочет работать))
Вот. Надеюсь понятно объяснил.
Ответить
|
Номер ответа: 7 Автор ответа: Jasmin
Вопросов: 23 Ответов: 417
|
Профиль | | #7
|
Добавлено: 11.07.08 12:48
|
Лови
'отображение всего списка
Range("A1:B1" .AutoFilter Field:=1
Range("A1:B1" .AutoFilter Field:=2
'из первого списка все содержащие СОК, из второго больше 1 марта 2008
'в переменной формируется дата с системными разделителями,
'но месяц и день нужно поменять местами для использования в фильтре.
'В данном случае это 01 марта 2008
Range("A1" .AutoFilter Field:=1, Criteria1:="=*СОК*", Operator:=xlAnd
  ateTxt = "3-01-2008" 'дата из файла в формате строка
  ateFilter = Replace(DateTxt, "-", "/"
Range("B1" .AutoFilter Field:=2, Criteria1:=">" & DateTxt, Operator:=xlAnd
'из первого списка все содержащие СОК, из второго больше 1 февраля 2008
'в переменной формируется дата с системными разделителями,
'но месяц и день нужно поменять местами для использования в фильтре.
'В данном случае это 01 февраля 2008
Range("A1" .AutoFilter Field:=1, Criteria1:="=*СОК*", Operator:=xlAnd
  ateTxt = "2-01-2008" 'дата из файла в формате строка
  ateFilter = Replace(DateTxt, "-", "/"
Range("B1" .AutoFilter Field:=2, Criteria1:=">" & DateFilter, Operator:=xlAnd
'из первого списка все содержащие СОК, из второго больше 20 февраля 2008
'в переменной формируется дата с системными разделителями,
'но месяц и день нужно поменять местами для использования в фильтре.
'В данном случае это 20 февраля 2008
Range("A1" .AutoFilter Field:=1, Criteria1:="=*СОК*", Operator:=xlAnd
  ateTxt = "2-19-2008" 'дата из файла в формате строка
  ateFilter = Replace(DateTxt, "-", "/"
Range("B1" .AutoFilter Field:=2, Criteria1:=">" & DateFilter, Operator:=xlAnd
'из первого списка все, из второго меньше 1 апреля 2008
'в переменной формируется дата с системными разделителями,
'но месяц и день нужно поменять местами для использования в фильтре.
'В данном случае это 01 апреля 2008
Range("A1:B1" .AutoFilter Field:=1
Range("A1:B1" .AutoFilter Field:=2
  ateTxt = "4-01-2008" 'дата из файла в формате строка
  ateFilter = Replace(DateTxt, "-", "/"
Range("B1" .AutoFilter Field:=2, Criteria1:="<" & DateFilter, Operator:=xlAnd
Ответить
|
Страница: 1 |
Поиск по форуму