Макрос Excel VBA для генерации графиков из нескольких таблиц - вложенный макрос - PullRequest
0 голосов
/ 04 мая 2018

У меня есть макрос для автоматического создания графика на основе моего выбора. Это прекрасно работает, если я выберу одну таблицу. Я должен выбрать одну таблицу за один раз, чтобы сгенерировать график. Можно ли как-то настроить вложенный макрос, чтобы выбрать рабочий лист и сгенерировать отдельный график для каждой таблицы?

Любые входные данные будут оценены. Спасибо :)

макрос для генерации одного графика

'Macro3 Macro Сочетание клавиш: Ctrl + a

Подграф ()

Dim rng As Range
Dim cht As ChartObject

Set rng = Selection
rng(1, 1).Clear
Set cht = ActiveSheet.ChartObjects.Add( _
    Left:=ActiveCell.Left, _
    Width:=450, _
    Top:=ActiveCell.Top, _
    Height:=250)

'Give chart some data
cht.Chart.SetSourceData Source:=rng

'Determine the chart type
cht.Chart.ChartType = xlLine

'Ensure chart has a title
cht.Chart.HasTitle = True

'Change chart's title
cht.Chart.ChartTitle.Text = "My Graph"


'Add Legend to the Bottom
cht.Chart.SetElement (msoElementLegendBottom)

End Sub

Таблица 1: период БА до н.э. 20174 4.1 4.1 4.1 4.1000 20181 4,0 4,5 5,0 5,044 20182 4,0 5,3 6,5 6,2989 20183 3,9 5,8 7,6 7,4139 20184 3,8 6,3 8,5 8,521 20191 3,8 6,6 9,3 9,1129 20192 3,8 6,9 9,7 9,5360 20193 3,8 7,0 10,0 10,0037 20194 3,7 7,0 9,9 9,8787 20201 3,8 6,9 9,7 9,6216 20202 3,9 6,8 9,5 9,3975 20203 4,0 6,6 9,2 9,2134 20204 4,0 6,5 8,9 9,0484 20211 4,1 6,3 8,6 8,8423

Таблица 2: период CA CC CD CE 20174 -5,38462 -5,3846 -5,3846 -5,3846 20181 -6,97674 4,6512 16,2791 17,5446 20182 -2,43902 29,2683 58,5366 52,6777 20183 -2,50000 28,8889 52,0000 46,6822 20184 -5,00000 18,8679 30,7692 35,8204 20191 -2,56410 13,7931 22,3684 22,9164 20192 .00000 9.5238 14.1176 12.1615 20193,0000 6,0606 7,5269 9,7749 20194 -2,63158 1,4493 2,0619 3,5928 20201,0000 -1,4286 -3,0000 -3,8200 20202 5,40541 -2,8571 -4,0404 -4,8709 20203 5.26316 -4.3478 -5.1546 -4.2420 20204 2.56410 -4.4118 -6.3158 -3.7151 20211 2,50000 -4,5455 -6,5217 -4,0282

1 Ответ

0 голосов
/ 04 мая 2018
  1. Отформатируйте каждый диапазон ячеек, который вы хотите использовать в качестве исходных данных для диаграмму, я бы порекомендовал форматировать как таблицы Excel через CTRL + T на клавиатуре.

  2. Переименуйте каждую таблицу. Используйте Лента дизайна таблиц> Имя, где вы можете изменить имена таблиц, отличные от значений по умолчанию Таблицы1, Таблицы2, ...

  3. В VBA, ссылка или цикл по каждой из таблиц в книге, они являются объектами ListObject в соответствии со ссылкой Excel VBA.

    Dim ListObj As Excel.ListObject
    Dim ws As worksheet
    
    For Each ListObj In ws.ListObjects
        ' make a chart
    Next ListObj
    

Другие методы могут работать на основе того, как вы форматируете / настраиваете / ссылаетесь на диапазон с вашими данными.

Вы можете создать свои собственные именованные диапазоны, чтобы ссылаться на таблицы, Таблица1: «A1: Z4» и т. Д., А затем ссылаться на них в коде или составлять список их адресов («A1: Z4») («AA1: AZ4 ") для включения в VBA и т. Д. Они могут работать, но предлагают меньшую гибкость по сравнению с форматированием данных в виде таблиц Excel.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...