首页 > 解决方案 > 定位图表

问题描述

我的代码,从 sheet1 中的数据绘制图表并将图表放置在 sheet2 的指定位置,在定位命令中被中断:

.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

标签: excelvba

解决方案


在您未经编辑的代码中。有一个额外End With的问题导致了问题


您试图访问Chart对象的.Leftand.Top属性。哪个不存在。

但是,您拥有的ChartObject对象确实有一个.Left和一个.Top属性。所以那些应该像这样使用

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

您还可以在制作图表时设置图表的位置,就像 Rory 在他的评论中提到的那样,

可以在此处查看相关文档。(请注意,我找不到这种精确的 excel 方法,这里列出了一个类似的方法


推荐阅读