Расположение диаграммы - PullRequest
2 голосов
/ 20 июня 2019

Мой код, для построения диаграммы из данных листа1 и размещения диаграммы в указанном месте листа2 прерывается командами позиционирования:

.Left = Range("B2").Left
.Top = Range("B2").Top

с ошибкой компиляции:

Ошибка компиляции: метод или элемент данных не найден

Может кто-нибудь помочь мне найти причину?

Sub addchrt()
    Dim ws As Worksheet
    Dim rng As Range
    Dim objChrt As ChartObject
    Dim chrt As Chart
    Set rng = Sheets("Sheet1").Range("A2:A20,C2:C20")

    Set ws = Sheets("Sheet2")
    With ws
        .Shapes.AddChart
        Set objChrt = .ChartObjects(.ChartObjects.Count)
        Set chrt = objChrt.Chart
        With chrt
            .ChartType = xlXYScatterSmoothNoMarkers
            .SetSourceData Source:=rng
            .HasTitle = True
            .ChartTitle.Text = "Test"
            .Axes(xlCategory, xlPrimary).HasTitle = True
            .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "xxx"
            .Axes(xlValue, xlPrimary).HasTitle = True
            .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "yyyy"
            .HasLegend = False
            .Left = Range("B2").Left
            .Top = Range("B2").Top
        End With
    End With
End Sub

1 Ответ

0 голосов
/ 20 июня 2019

В вашем неотредактированном коде.Была добавлена ​​дополнительная End With, которая вызывала проблему


Вы пытаетесь получить доступ к свойству .Left и .Top объекта Chart .Которого не существует.

Однако у объекта ChartObject , который у вас есть, есть свойства .Left и .Top.Таким образом, они должны использоваться следующим образом:

        objChrt.Left = Range("B2").Left
        objChrt.Top = Range("B2").Top

Вы также можете установить положение диаграммы при ее создании, как Рори упоминает в своем комментарии,

документация, которую можно увидеть здесь .(Обратите внимание, что я не смог найти этот точный метод для Excel, здесь есть один похожий )

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