2013-08-18 93 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