Я ищу способ восстановить стандартное/собственное поведение изменения размера диаграммы в Excel 2010 после ее отключения (например, манипулируя диаграммой с помощью VBA).
Теперь я нигде не смог найти ничего о поведении, которое я имел в виду, поэтому я собираюсь предположить, что оно нуждается в подробном объяснении.
Введите и выберите случайные числовые данные в 4-5 ячейках Excel и вставьте новую диаграмму Clustered Columns. Вам нужно увидеть область графика диаграммы. Теперь выберите диаграмму и получите значение PlotArea.Top со следующей строкой.
ActiveChart.PlotArea.Top
Если вы не трогали диаграмму, это должно вернуть значение 7. Теперь используйте один из манипуляторов диаграммы, чтобы изменить размер диаграммы по вертикали, и снова используйте ту же командную строку.
activechart.plotarea.top
Обратите внимание, что возвращаемое значение по-прежнему равно 7. Теперь установите для этого свойства значение 7 в VBA.
ActiveChart.PlotArea.Top = 7
Снова возьмите один из рулей, измените размер диаграммы по вертикали и снова получите свойство .top, используя:
ActiveChart.PlotArea.Top
Обратите внимание, как изменилось значение. Оно будет либо меньше, либо больше 7 в зависимости от того, уменьшили или увеличили вы размер диаграммы.
Как только любой элемент диаграммы был перемещен вручную или с помощью кода VBA, он теряет это свойство «абсолютной позиции» и начинает перемещаться внутри ChartArea всякий раз, когда изменяется размер диаграммы. Хотя некоторые элементы можно сбросить с помощью .SetElement, это не работает для области графика. Например, следующие командные строки не восстанавливают поведение, которое я описываю.
ActiveChart.SetElement msoElementPlotAreaNone
ActiveChart.SetElement msoElementPlotAreaShow
Я часто автоматически изменяю размеры диаграмм с помощью VBA, и когда область графика перемещается сама по себе, намного сложнее предсказать эффект изменения размера диаграммы и это приводит к непостоянным результатам.
Итак, вернемся к вопросу: кто-нибудь знает способ восстановить это поведение по умолчанию либо для всей диаграммы, либо, по крайней мере, конкретно для PlotArea?
Заранее спасибо всем, кто может помочь!
Винсент