Страницы: 1
RSS
[ Закрыто ] Требуется помощь по макросам
 
Делаю для себя программу(ну как делаю, методами сотни проб на ошибок, так как программировать я не умею) на макросах по "учёту картриджей", в принципе всё сделал, но возникла идея максимально упростить отчёт по количеству принятых картриджей. Запнулся я на фильтрации даты в сводной таблице. Штука сделана неудобно, в новой фишке 2013 тоже не очень удобно реализовано методами excel.
Проблема #1 у меня дата вводится автоматом при добавлении нового перемещения картриджа по кнопке:
Код
 nub = Val(Data.Text)
 Data.Text = Format(Now, "dd.mm.yyyy")
Дата оказывается, где надо, и как надо, но excel не воспринимает её как дату(ячейки в формате даты), пока мышкой на эту ячейку не нажмёшь. Соответственно фильтр с условиями для даты не работает.
Может кто подскажет что нужно добавить.
Проблема #2
Есть форма, в форме выбирается первая дата и вторая дата. Между этими датами должен отфильтроваться список. К сожалению ничего не нашёл, кроме разве что вот.
Но в той теме не интервал,  а "менее той даты".
Проблема #3
У меня есть такой код, нашёл в гугле, переделал под себя.
Код
Private Sub CommandButton18_Click()
On Error Resume Next
Application.DisplayAlerts = False
Sheets("Отчёт для акта").Delete
Application.DisplayAlerts = True
On Error Resume Next
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:="Картриджи!A1:L9999").CreatePivotTable TableDestination:="", TableName:="otchet"
With ActiveSheet
.Name = "Отчёт для акта"
.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
End With
With ActiveSheet.PivotTables("otchet")
.SmallGrid = True
.PivotFields("Дата").Orientation = xlPageField
.PivotFields("Местоположение").Orientation = xlPageField
.PivotFields("Статус").Orientation = xlPageField
.PivotFields("Модель").Orientation = xlRowField
.PivotFields("Кол-во").Orientation = xlDataField
ActiveSheet.PivotTables("otchet").PivotFields("Местоположение").CurrentPage = "Стационар"
ActiveSheet.PivotTables("otchet").PivotFields("Статус").CurrentPage = "Принято"
End With
End Sub
Он формирует сводную таблицу, но если скажем я сформирую таблицу вручную, перед этим отфильтрую по дате, то сводная таблица будет только из этих значений, которые остались после фильтра. Если же создаю таблицу макросом, то он берёт значения и те, что "спрятаны" фильтром.
Хочу, чтобы получилось так.

Я нажимаю на отчёт.
Вылезает меню.


Ввожу первую и вторую дату, дата выбирается при навидении через календарь. Спасибо этой теме:)
При и уже при нажатии одной из кнопок формируется отчёт с учётом выбранного интервала даты. Как вариант, либо чтобы сначала фильтровалось таблица, а потом уже на основе её делался сводный отчёт, либо уже фильтр применялся на сводном отчёте.
Файл загружаю, правда в моём коде чёрт ногу сломит, так как я его почти не чистил от "мусора", но всё же :)
Заранее благодарен :)
 
2. Если создаете новую тему

   2.1. Название темы должно отражать смысл проблемы. Темы с названиями "Помогите", "Help", "Срочно", "Нужен макрос" - плохая идея. Модераторы имеют право переименовать, удалить или закрыть такие темы без предупреждения.
   2.2. Опишите максимально подробно вашу задачу и желаемый результат. Желательно уточнить вашу версию Excel.
   2.3. Приложите файл(ы) с примером (общим весом не более 300Кб) в реальной структуре и форматах данных того, что есть сейчас и того, что хотелось бы на выходе.  
 
Цитата
2.6. Один вопрос - одна тема. Не следует в открываемой теме обозначать и задавать сразу несколько вопросов.
Страницы: 1
Наверх