2015-10-08 2 views
0

Я пытаюсь AutoScale участка в Excel, к сожалению, я только удался масштабировать ось Y, потому что я получаю сообщение об ошибке при установке максимального значения оси X:Как автоматически масштабировать ось X графика с использованием VBA?

ошибки времени выполнения " -2147467259 (80004005) ':

Метод 'MaximumScale' объекта 'оси' не удалось

Я получил этот код, чтобы помочь мне масштабировать свой сюжет:

Option Explicit 

Sub AutoScaleAxe() 

    With ActiveChart.Axes(xlValue, xlPrimary) 
     .MaximumScale = ActiveSheet.Range("E26").Value 
     .MinimumScale = ActiveSheet.Range("E25").Value 
     .MajorUnit = ActiveSheet.Range("E27").Value 
    End With 

    With ActiveChart.Axes(xlCategory, xlPrimary) 
     'The following line raises an error 
     .MaximumScale = ActiveSheet.Range("E22").Value 
     .MinimumScale = ActiveSheet.Range("E21").Value 
     .MajorUnit = ActiveSheet.Range("E23").Value 
    End With 
End Sub 

Вот клетки я использую, чтобы масштабировать сюжет:

Cells used to scale the plot

+0

Что это за карта? – Rory

+1

Я получаю ту же ошибку, если я попробую код на линейной диаграмме, но он работает нормально на диаграмме разброса. Я подозреваю, что у вашего типа диаграммы нет свойства MaximumScale. – nekomatic

+0

Моя цель - показать нормальное распределение, поэтому я решил использовать гистограмму. – JeanRene

ответ

0

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

Если вы хотите отобразить гистограмму с помощью категорического типа, как в гистограмме, вам нужно либо:

  1. создал диаграмму с фиксированным числом точек данных (т.е. фиксированного числа бункеров) и пересчитайте фактические точки данных (значения бункера) при изменении требуемой оси min и max, или
  2. вычислить точки данных, охватывающие самый большой диапазон от оси min до max, который вы хотите покрыть, и изменить источник данных серии диаграмм диапазон, например ActiveChart.SeriesCollection(1).Values = myrange.
0

Как объясняется сообщение this, вы не можете использовать MinimumScale, MaximumScale диаграммы с категориальной осью X.

Единственное, что доступно, это TickLabelSpacing и TickMarkSpacing. Или, как объясняет @nekomatic, вы должны использовать числовую ось X.

Смежные вопросы