Как создать макрос VBA, который будет отображать график изменения диапазона? - PullRequest
3 голосов
/ 24 июня 2010

В настоящее время у меня есть таблица, которая будет автоматически обновляться при добавлении новых данных в электронную таблицу. Я могу легко создать макрос, который будет отображать заданный диапазон, но как мне заставить его автоматически обновлять диапазон, чтобы он отображал все нужные данные? Моя цель - создать кнопку, которую я могу нажать в любое время, чтобы запустить макрос для этой таблицы и отобразить результаты.

Прямо сейчас, мой код:

Sub Macro1()
'
' Macro1 Macro
' Macro recorded 6/24/2010 by Nicole
'

''
    Range("R1:S12").Select
    Range("S12").Activate
    Charts.Add
    ActiveChart.ChartType = xlLineMarkers
    ActiveChart.SetSourceData Source:=Sheets("Intakes").Range("R1:S12"),PlotBy _
        :=xlColumns
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Intakes"
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "# Cases that day"
        .Axes(xlCategory, xlPrimary).HasTitle = False
        .Axes(xlValue, xlPrimary).HasTitle = False
    End With
End Sub

Спасибо

Николь

Ответы [ 3 ]

2 голосов
/ 01 июля 2010

Все, что вам нужно сделать по-другому (хотя это немного зависит от того, как исходная ячейка обновляет свое значение), это поместить ваш макрос в событие изменения рабочего листа, а затем сравнить цель с диапазоном интересов:

Sub Worksheet_Change(ByVal Target As Range)

If Not Application.Intersect(Target, Me.Range("R1:S12")) Is Nothing Then
    Range("R1:S12").Select
    Range("S12").Activate
    Charts.Add
    ActiveChart.ChartType = xlLineMarkers
    ActiveChart.SetSourceData Source:=Sheets("Intakes").Range("R1:S12"),PlotBy _
        :=xlColumns
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Intakes"
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "# Cases that day"
        .Axes(xlCategory, xlPrimary).HasTitle = False
        .Axes(xlValue, xlPrimary).HasTitle = False
    End With
End If  

End Sub
1 голос
/ 15 марта 2016

К вашему сведению, нашел другое решение для этого ...

Я боролся с той же проблемой:

Я уже создал динамическое имя, которое выбирает желаемый диапазон графика [весь диапазон], но после того, как я вставил это имя в диапазон графика, оно сразу преобразовалось обратно в статический диапазон [ссылка на ячейку] и больше не отображало мое имя динамического диапазона.

Я создал макрос: выберите график, измените данныевыделите, перезапишите статический диапазон ячеек с моим созданным динамическим именем, введите.

Я назначил этот макрос кнопке «Обновить график», но заметил, что макрос принял диапазон имени как статический, а не динамический.

ТАК ЧТО ЗДЕСЬ РЕШЕНИЕ: открыть меню макроса, изменить созданный макрос ... в макросе, найти фиксированный диапазон ячеек, перезаписать его с помощью «имя листа»! Dynamicname

done,Кнопка теперь должна обновлять график данными динамического диапазона.

надеюсь, это кому-то поможет.веселит.

0 голосов
/ 24 июня 2010

Достаточно простое решение - сделать этот диапазон именованным диапазоном, используя поле ввода, расположенное справа от раздела ввода формулы.Таким образом, вместо того, чтобы ссылаться на диапазон как «R1: S12», вы можете получить к нему доступ по имени Range («MyOwnRange»).Если вы вставите строки или столбцы в именованный диапазон, он автоматически изменит размер, чтобы включить новые строки.

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