Как сделать динамический SetSourceData () для диаграммы Chart? - VB

Узнай цену своей работы

Формулировка задачи:

Мучаюсь над дипломом, и не могу найти решение в интернете... Подскажите как грамотно создать динамический диапазон данных для диаграммы? Хотелось бы чтобы при добавлении на лист новой строки данных, диаграмма перед постраением автоматически подгоняла свой диапазон и после этого строилась. Есть вот такой статический вариант кода.
Листинг программы
  1. Private Sub Command4_Click()
  2. Set apps = CreateObject("Excel.Application")
  3. apps.Visible = True 'запускаем приложение Excel
  4. Set AppsWorkBook = apps.Workbooks.Open(App.Path & "\base\base.xls", ignoreReadOnlyrecommended = True) 'открываем базу
  5. apps.DisplayAlerts = False ' отключаем предупреждения
  6. AppsWorkBook.Sheets("Диаграмма").Delete 'удаляем лист
  7. apps.DisplayAlerts = True ' включаем предупреждения
  8. 'вставляем после всех листов новый лист "Диаграмма"
  9. AppsWorkBook.Sheets.Add(After:=AppsWorkBook.Sheets(AppsWorkBook.Sheets.Count)).Name = "Диаграмма"
  10. Set oChart = AppsWorkBook.Sheets("Диаграмма").ChartObjects.Add(10, 10, 300, 250).Chart ' положение и размеры новой диаграммы
  11. oChart.SetSourceData (AppsWorkBook.Sheets("Лист2").Range("a3:C7", "c3:C7")) ' <- статический вариант диапазона который надо сделать динамичным
  12. oChart.ChartType = xlColumnClustered
  13. oChart.HasTitle = True
  14. With oChart.ChartTitle
  15. .Characters.Font.Italic = True
  16. .Characters.Font.Size = 18
  17. .Text = "Средняя удовлетворенность по группам"
  18. End With
  19. Set oChart = Nothing
  20. apps.ActiveWorkbook.Save
  21. apps.ActiveWorkbook.Close
  22. apps.Quit
  23. Set apps = Nothing
  24. End Sub
Буду очень благодарен если подскажете как с этим разобраться.

Решение задачи: «Как сделать динамический SetSourceData () для диаграммы Chart?»

textual
Листинг программы
  1. apps.DisplayAlerts = False ' отключаем предупреждения
  2. AppsWorkBook.Sheets("Диаграмма").Delete 'удаляем лист
  3. apps.DisplayAlerts = True  ' включаем предупреждения
  4. lr = Cells(Rows.Count, 1).End(xlUp).Row
  5. 'вставляем после всех листов новый лист "Диаграмма"
  6. AppsWorkBook.Sheets.Add(After:=AppsWorkBook.Sheets(AppsWorkBook.Sheets.Count)).Name = "Диаграмма"
  7.  Set oChart = AppsWorkBook.Sheets("Диаграмма").ChartObjects.Add(10, 10, 300, 250).Chart ' положение и размеры новой диаграммы
  8. oChart.SetSourceData (AppsWorkBook.Sheets("Лист2").Range("a3:C" & lr, "c3:C" & lr)) ' <- динамический вариант диапазона который надо сделать динамичным
  9. oChart.ChartType = xlColumnClustered
  10. oChart.HasTitle = True

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.6 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы