Ексель+VBA

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

Pavel55, как всегда прав ;)
А вообще, все что касается работы с датой/временем - сплошная мутота. Одни "тонкости".
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

Прошло 3 недели и оказалось, что в макросе от Pavel55 ошибка.
При прибавлении к дате, допустим 27.04.08, 7-ми дней, получалась дата 04/34/2008.
Все из-за этих "тонкостей" с датой :( , форматом даты.
Правильно оказалось так:

Код: Выделить всё

Sub Выбрать1()
Dim iDateOne As Date
Dim iDateTwo As Date
iDateOne = Range("L2")
iDateTwo = iDateOne + 7
iCriteria1 = ">=" & Format(iDateOne, "#")
iCriteria2 = "<=" & Format(iDateTwo, "#")
ActiveSheet.ListObjects("Таблица1").Range.AutoFilter Field:=5, Criteria1:=iCriteria1, Operator:=xlAnd, Criteria2:=iCriteria2
End Sub
"подсмотрено" здесь > http://msoffice.nm.ru/faq/macros/filters.htm#faq35
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

Решил не создавать новую тему, вопрос опять по дате и автофильтру.
Возникла задача выбрать в таблице, формирующейся в течение года, данные за текущий месяц. В общем случае месяц может быть задан датой, например 12.03.08 из календаря. Пробовал применить код от Pavel55 , но чёт никак не получается. Не могу выбрать именно МЕСЯЦ.
Спасибо.
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

Вопрос решился, подсказал pashulka.
Если кому интересно: Автофильтр - Данные за текущий месяц

Код: Выделить всё

Dim iDateOne As Date, iDateTwo As Date
Dim iCriteria1 As String, iCriteria2 As String

iDateOne = DateSerial(Year(Date), Month(Date), 1)
iDateTwo = DateSerial(Year(Date), Month(Date) + 1, 1)

iCriteria1 = ">=" & Format(iDateOne, "#")
iCriteria2 = "<" & Format(iDateTwo, "#")

Range("A:A").AutoFilter Field:=1, _
Criteria1:=iCriteria1, Operator:=xlAnd, Criteria2:=iCriteria2
или так, без переменных, одной строкой

Код: Выделить всё

[A:A].AutoFilter Field:=1, _
Criteria1:=">=" & CDbl(DateSerial(Year(Date), Month(Date), 1)), Operator:=xlAnd, _
Criteria2:="<=" & CDbl(DateSerial(Year(Date), Month(Date) + 1, 0))
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

Только когда пишете одной строкой второй критерий должен так же быть < а не <= ;)
Андрей Энтелис,
aentelis.livejournal.com
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

упс..... :confused:
ошибочка вышла...
Спасибо за поправку :rolleyes:
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
Azazelpj
Сообщения: 1
Зарегистрирован: 24 фев 2011, 15:21

Хотел удалить или оставить все значения в столбце, которые заканчиваются на 2, НО все становится скрытым - не выбранным.
Sub Макрос5()
'
' Макрос5 Макрос
'
' Сочетание клавиш: Ctrl+а
'
ActiveSheet.ListObjects("Таблица1").Range.AutoFilt er Field:=1, Criteria1:= _"=*2", Operator:=xlAnd
End Sub
И еще, как добавить в код поиск чисел с окончанием 4 7 и т.д.?
Ответить