Почему размер диаграмм Excel не может быть точно задан с помощью VBA?

#excel #vba #excel-charts

#преуспеть #vba #excel-диаграммы

Вопрос:

Я пытаюсь установить размер диаграмм Excel с помощью VBA, и я часто это замечал.Карта мира.Ширина и .Карта мира.Свойства высоты устанавливают значения немного иначе, чем требуется. Например, приведенный ниже код:

 Sub test_chart_area()
    Dim CA_w As Double
    Dim CA_h As Double
    CA_w = 500
    CA_h = 300
    With ActiveChart
        .ChartArea.Width = CA_w
        Debug.Print (".ChartArea.Width: " amp; .ChartArea.Width)
        .ChartArea.Height = CA_h
        Debug.Print (".ChartArea.Height: " amp; .ChartArea.Height)
    End With
End Sub

 

устанавливает для диаграммы значение «.ChartArea.Ширина: 496.902204724409 » и «.Диаграмма.Рост: 293.152125984252»

.PlotArea.Внутренняя ширина и.Площадь участка.С другой стороны, свойства InsideHeight, по-видимому, присваивают только целочисленные значения. Например, приведенный ниже код:

 Sub test_plot_area_inside()
    Dim PA_iw As Double
    Dim PA_ih As Double
    PA_iw = 200.411968503937
    PA_ih = 100.642677165354
    With ActiveChart
        .PlotArea.InsideWidth = PA_iw
        Debug.Print (".PlotArea.InsideWidth: " amp; .PlotArea.InsideWidth)
        .PlotArea.InsideHeight = PA_ih
        Debug.Print (".PlotArea.InsideHeight: " amp; .PlotArea.InsideHeight)
    End With
End Sub
 

устанавливает для диаграммы значение «.PlotArea.Внутренняя ширина: 200 » и «.Площадь участка.Внутренняя высота: 100».

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

Заранее большое спасибо.

Комментарии:

1. Я полагаю, что это как-то связано со значениями с плавающей запятой

2. Почему бы не использовать предустановленную диаграмму в шаблоне и просто выгрузить данные, а затем сохранить как? Это сэкономило бы немало работы с кодом и ускорило бы ее…

Ответ №1:

Установите свойства .Width и .Height ActiveChart.Parent .

Комментарии:

1. Большое спасибо, все работает нормально. Кстати, я понял, что результат настройки ActiveChart. Область диаграммы. Ширина и ActiveChart. Область диаграммы. Высота зависит от уровня масштабирования листа (например, ActiveChart. Карта мира. Width = 500 дает разные результаты при запуске, когда лист, содержащий диаграмму, отображается с масштабированием 50% или 100%).