定义vba图表位置

时间:2013-08-18 06:58:26

标签: excel vba charts position

我是vba的新手,我正试图在excel页面上定位vba图表。下面是代码。如果我更换:

Set c = c.Location(Where:=xlLocationAsObject, Name:=chLoc.Parent.Name)

Set c = c.Location(Where:=xlLocationAsObject, Name:="Sheet1")

然后代码工作。否则我明白了 '错误1004方法'范围'对象'_Worksheet失败' 并且错误发生在行上:

   Set chLoc = sh2.Range(sh2.[a1:g10])

这是代码 - 谢谢,如果你有很好的vba图表资源,我会很感激任何方向:

Sub Chart()

    Dim sh1 As Worksheet
    Dim sh2 As Worksheet

    Dim xaxis As Range
    Dim yaxis As Range

    Set sh1 = ActiveWorkbook.Sheets("Spon Email Performance Graph")
    Set sh2 = ActiveWorkbook.Sheets("Graphs")

    Set xaxis = sh1.Range(sh1.[b15], sh1.[b15].End(xlDown))
    Set yaxis = sh1.Range(sh1.[g15], sh1.[g15].End(xlDown))

    Dim chLoc As Range
    Set chLoc = sh2.Range(sh2.[a1:g10])

    ' Worksheets("Graphs").ChartObjects.Delete

    Dim c As Chart
    Set c = Charts.Add
    Set c = c.Location(Where:=xlLocationAsObject, Name:=chLoc.Parent.Name)
    With c
        .ChartType = xlColumnClustered
        ' set other chart properties

    End With

    Dim s As Series
    Set s = c.SeriesCollection.NewSeries
    With s
        .Values = yaxis
        .XValues = xaxis
        ' set other series properties
    End With


End Sub

1 个答案:

答案 0 :(得分:1)

您正在混淆ChartChartObject。这里有一个示例代码,展示了如何处理这两个对象:

Dim left As Integer, top As Integer, width As Integer, height As Integer
left = 10
top = 10
width = 10
height = 10
Dim co As ChartObject
Dim c As Chart
Set co = sh1.ChartObjects.Add(left, top, width, height)
Set c = co.Chart
With c
   .ChartType = xlColumnClustered
End With