создание графиков для VBA, с различными видами данных - PullRequest
0 голосов
/ 23 мая 2018

У меня есть задание для моего школьного экзаменационного проекта, и я попробовал и попробовал, и надеюсь, что вы мне поможете

Вопрос такой:

Поскольку «задержанные» ученики составляют «Риск »для университета, важно, чтобы руководитель исследований был подготовлен Некоторые дополнительные статистические данные об этой группе студентов.Создайте подзадачу / функцию, которая может отображать следующие графики: i Лист «Задержанные студенты»:

  • Процентное распределение опоздавших студентов по каждой учебной доске
  • Процентное распределение опоздавших студентов междукаждый PROGRAM_ID's
  • Процентное распределение опоздавших студентов между каждым факультетом
  • Процентное распределение опоздавших студентов между каждым кампусом
  • Количество опоздавших студентов, распределенное по ENROLL_PERIOD

Руководитель учебного заведения хотел бы иметь возможность генерировать статистику, нажав кнопку на листе «Задержанные студенты».

Это мой код, и он не хочет работать:

Set rng = ActiveSheet.Range ("A2: I2")
Set cht = ActiveSheet.Shapes.AddChart2
cht.Chart.SetSourceData Source: = rng
cht.Chart.Chartype = xlXYScatterLines
cht.Chart.ChartTitle.Text = "Statistic of Student"

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Я нашел эту MSDN-страницу, которая объясняет, как создавать графики с помощью VBA:
https://msdn.microsoft.com/en-us/library/office/aa203725(v=office.11).aspx

Код с их страницы:

Sub AddChartSheet()
        Dim chtChart As Chart
        'Create a new chart.
        Set chtChart = Charts.Add
    With chtChart
          .Name = "Tool Sales2"
       .ChartType = xlColumnClustered
       'Link to the source data range.
       .SetSourceData Source:=Sheets("Sheet1").Range("A1:D5"), _
         PlotBy:=xlRows
       .HasTitle = True
       .ChartTitle.Text = "=Sheet1!R1C2"
       .Axes(xlCategory, xlPrimary).HasTitle = True
       .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Month"
       .Axes(xlValue, xlPrimary).HasTitle = True
       .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Sales"
   End With
End Sub

Так что это устраняет ваши ошибки:

Dim cht As Chart
Dim rng as Range
Set rng = ActiveSheet.Range ("A2: I2")
Set cht = ActiveSheet.Shapes.AddChart2
cht.Chart.ChartType = xlXYScatterLines
cht.Chart.SetSourceData Source:= rng, PlotBy:=xlRows
cht.Chart.ChartTitle.Text = "Statistic of Student"
0 голосов
/ 23 мая 2018

Вы должны объявить rng и cht как объекты.Это работает:

Public Sub TestMe()

    Dim rng As Object, cht As Object
    Set rng = ActiveSheet.Range("A2: I2")
    Set cht = ActiveSheet.Shapes.AddChart2

    With cht.Chart
        .SetSourceData Source:=rng
        .ChartType = xlXYScatterLines
        .ChartTitle.Text = "Statistic of Student"
    End With
End Sub

enter image description here

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