Разработка приложений


         

самый важный: формирование структуры сводной




Рис. 4

Третий шаг — самый важный: формирование структуры сводной таблицы. На экране появится диалоговое окно с изображением схемы таблицы (рис. 5).



Рис. 5

С правой стороны будут нарисованы три кнопки, которые соответствуют трем колонкам текущей электронной таблицы. В качестве названий кнопок используется содержимое ячеек первой строки таблицы, которое интерпретируется как названия столбцов. Перетаскивая мышью названия правых кнопок, формируем таблицу, изображенную на рис. 6.



Рис. 7

Для этого наименование “Проект” нужно поместить в поле “COLUMN”, “Тип” и “Файл” — в “ROW”, а затем “Файл” — в “DATA”.

Заключительный, четвертый шаг также пройдем, ничего не меняя (будет использоваться переключатель New worksheet) — нажав кнопку Finish. У нас появится созданная мастером сводная таблица. Теперь остановим режим записи макрокоманды — Tools|Macro|Stop Recording.

ШАГ 9. Вернемся в среду VBA. Там в окне проектов мы увидим, что у нас появился новый модуль, а в нем — процедура примерно такого вида:

Sub Macro1()

ActiveSheet.PivotTableWizard SourceType:=xlDatabase, _

SourceData:=”Sheet1!R1C1:R16C3", _

TableDestination:=””, TableName:=”PivotTable1"

ActiveSheet.PivotTables(“PivotTable1”).AddFields _

RowFields:=Array(“Тип”, “Файл”), _

ColumnFields:=”Проект”

ActiveSheet.PivotTables(“PivotTable1”). _

PivotFields(“Файл”).Orientation = x1DataField

End Sub

Скопируем ее в наш основной модуль PivotVBP, переименуем в CreatePivotTable, а модуль Module1 удалим из проекта. В приведенном выше коде видно, что первая строка использует ссылку на конкретный диапазон из 16 строк. Чтобы использовать данную процедуру для любого числа строк, необходимо добавить только две строки кода для выделения ячейки, расположенной выше на одну строку. При этом мы будем использовать метод CurrentRegion объекта Selection для выделения смежных строк и столбцов. Необходимо также изменить аргумент SourceData = Selection у метода PivotTableWizard, чтобы использовать объект Selection в качестве диапазона. Результат нашей работы приведен в листинге 3.


Содержание  Назад  Вперед