VBA Runtime Error 1004 установка минимальных и максимальных значений оси диаграммы - PullRequest
0 голосов
/ 27 августа 2018

У меня есть MS Acces Db. У меня есть командная кнопка для экспорта (TransferSpreadsheet acExport) запроса в Excel и создания диаграммы (Set ch = ws.Shapes.AddChart.Chart)

Это мой код работает нормально:

With ch
  .ChartType = xlColumnClustered
  .SeriesCollection(2).AxisGroup = 2
  .SeriesCollection(2).ChartType = xlLineMarkers
  .ChartGroups(1).GapWidth = 69
  .Axes(xlValue).MajorGridlines.Delete
  .Axes(xlCategory, xlPrimary).HasTitle = False
  .Axes(xlValue, xlPrimary).HasTitle = False
  .SetElement (msoElementLegendBottom)
End with

Мне нужно установить максимальное и минимальное значения оси графика с помощью vba. Мне нужно сослаться на диаграмму уже на листе.

Каждый раз, когда я добавляю к своему коду:

.MaximumScale = ActiveSheet.Range("Axis_max").Value
.MinimumScale = ActiveSheet.Range("Axis_min").Value

VBA отображает ОШИБКУ 1004 «Приложение или Объект» Я запутался, почему мой код не выполняет эти инструкции

Я был бы очень признателен, если бы кто-нибудь дал мне руководство по этому вопросу,

Всего наилучшего

Ответы [ 2 ]

0 голосов
/ 08 сентября 2018

Наконец, я нашел код для установки минимальной и максимальной вертикальных осей диаграммы.

With ch
.ChartType = xlColumnClustered
.SeriesCollection(2).AxisGroup = 2
.SeriesCollection(2).ChartType = xlLineMarkers
.ChartGroups(1).GapWidth = 69

myMax = DMax("Total_Sal", "qry_task")
myMin = DMin("Total_Sal", "qry_task")

 With .Axes(xlvalue, xlPrimary)
        .MinimumScale = myMin
        .MaximumScale = myMax
 End With

myMax = DMax("Task_Val", "qry_task")
myMin = DMin("Task_Val", "qry_task")
With .Axes(xlvalue, xlSecondary)
        .MinimumScale = myMin
        .MaximumScale = myMax
    End With

Конец

Я действительно ценю начальную помощь от ja72

Для завершения моего кода мне помогла Энди Поуп

0 голосов
/ 28 августа 2018

Ваша проблема в том, что .MinimumScale и .MaximumScale не являются свойствами Chart, а Axis объектов.

Попробуйте вместо:

.Axes(xlCategory, xlPrimary).MaximumScale = Sheet1.Range("Axis_max").Value
.Axes(xlCategory, xlPrimary).MinimumScale = Sheet1.Range("Axis_min").Value
...