2013-08-18 92 views
0

我是vba的新手,并试图在excel页面上放置vba图表。以下是代码。如果我更换:定义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 
+0

IIF你想要的代码更可靠,而不是sh2.Range(SH2 [A1:G10]),使用sh2.Range( “A1:G10”)。 –

回答

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 
+0

完美!我只改变了'sh1'到'sh2',因为sh2是我放置图表的地方。再次感谢。 – Elm

+0

@Elm根本没有问题。实际上,您需要根据需要更改此代码;它只是帮助你开发你自己的代码。 – varocarbas