2015-11-04 3 views
-2

С кодом, который у меня ниже, это несколько строк из всего макроса, но мне нужно иметь возможность изменять дату criteria1 легко, без необходимости вручную делать это каждый раз. Это делается на листе ежемесячного отчета. Формат даты создается из базы данных сбора данных и не может быть изменен.Макро для изменения критериев даты1 в макросе

Существует ли код для изменения макроса, строки в макросе, с использованием макроса, в частности, даты, которую у меня есть в моем примере?

Sheets("Raw Data 3M").Select 
    Cells.Select 
    Application.CutCopyMode = False 
    Selection.AutoFilter 
    ActiveSheet.Range("$A$1:$I$1000").AutoFilter Field:=8, Criteria1:= _ 
    "=2015  -10-October" 
    Range("A1:I5000").Select 
    Selection.Copy 
    Sheets("Raw Data").Select 
    Range("A1").Select 
    ActiveSheet.Paste 
+0

Данные за эти месяцы - 2015 -10 октября, в следующем месяце - 2015 -11-ноября и т. Д. И т. Д. Id хотел бы обменять код более позднего месяца со старшим месяцем. Извините за любую путаницу – Inglis

+0

Есть ли образец к датам? –

+0

Единственный способ, которым я могу ответить, это будет ... да ... Я использую эти рабочие листы один раз в месяц. Месяц, например, в этом году, будет показан в период с 10 октября по октябрь. Следующий месяц - 2015-11 ноября. У меня есть несколько макросов для выполнения аналогичных функций с разными рабочими листами. Вместо того, чтобы вручную менять октябрь-ноябрь, я хотел бы, чтобы макрос сделал это для меня ... Мысль? – Inglis

ответ

0

Инглис,

Есть несколько способов сделать это.

Если вы хотите самый быстрый способ, который я бы не рекомендовал распространять, (потому что пользователи могут быть немыми), просто установить условие автофильтра к InputBox:

ActiveSheet.Range("$A$1:$I$1000").AutoFilter Field:=8, Criteria1:= _ 
inputbox("Prompt","Title","=2015  -10-October") 

Просто заменить Подскажите и Название с чем-то более подходящим.

У вас также может быть поле ввода, которое форматирует введенную дату по мере необходимости, но если вы не будете следовать определенному формату, код будет ошибочным. Такие как:

Dim vDate as Variant 
vDate = inputbox("Type a date in the format dd/mm/yyyy") 
vDate = DateSerial(Mid(vDate, 7, 4), Mid(vDate, 4, 2), Mid(vDate, 1, 2)) 
vDate = "=" & Format(vDate, "yyyy  -dd-mmmm") 
ActiveSheet.Range("$A$1:$I$1000").AutoFilter Field:=8, Criteria1:=vDate 

Надеюсь, это поможет!

+0

2-й вариант отлично работает! Спасибо! – Inglis

Смежные вопросы