2014-04-11 76 views
0

我想繪製範圍到已經在工作表上創建的繪圖。在下面的代碼中,它被稱爲chart1。問題是Xvals和Yvals是範圍數組。我需要在每個數組中繪製一個特定的範圍,如圖所示。我得到的錯誤「NewSeries.Values = TempX 」行是「運行時錯誤'5':無效的過程調用或參數」。 tempX和tempY被定義爲變體。我也試着將它們定義爲範圍。我也試着將Xvals(BoxNum)直接分配給.Xvalues。 BoxNum是與要繪製的數組中的點相對應的整數。任何想法我做錯了什麼?提前致謝!從數組中的範圍繪製vba

series.NewSeries 
    Set TempX = Xvals(BoxNum) 
    Set TempY = Yvals(BoxNum) 
    Set NewSeries = chart1.SeriesCollection(chart1.SeriesCollection.Count) 
    NewSeries.Name = "Adjusted" 
    NewSeries.Values = TempX 
    NewSeries.XValues = TempY 
+0

你有最後兩個任務翻轉了嗎? –

+0

啊。我做。我修改了代碼,使其成爲論壇友好的。不過,對於正在發生的問題應該沒有關係。正確? – m25

+0

我不知道這是否重要:它可能取決於已經繪製的內容。我認爲你的代碼有點偏離了上下文(例如'series'是什麼?),但對我來說基本上沒問題,所以很難說如果沒有看到更完整的代碼集,問題可能是什麼。 –

回答

1

我不確定你想要做什麼。問題不夠清楚,但以下代碼可能適合您的目的。 爲什麼不使用語句來簡化代碼?另外,我不確定爲什麼您必須使用TmpX和TmpY,而不是直接將值應用於圖表。

Sub setArrayToChart() 
    Dim chat1 As Chart 
    Dim Xvals(2) As Range, Yvals(2) As Range 
    Dim boxNum As Integer 

    Set chart1 = Charts("chart1") 

    Set Xvals(0) = Range(Cells(1, 1), Cells(3, 1)) 
    Set Xvals(1) = Range(Cells(1, 2), Cells(3, 2)) 

    Set Yvals(0) = Range(Cells(1, 3), Cells(3, 3)) 
    Set Yvals(1) = Range(Cells(1, 4), Cells(3, 4)) 

    boxNum = 1 

    Set TempX = Xvals(boxNum) 
    Set TempY = Yvals(boxNum) 

    With chart1.SeriesCollection.NewSeries 
     .Name = "Adjusted" 
     .Values = TempX 
     .XValues = TempY 
    End With 
End Sub 
+0

謝謝kwiqry。我沒有提到數組是全局數組。你的回答是完美的,因爲我不知道是否可以將數組存儲範圍分配給Xvalues或.values。所以我看了別處,發現問題在我的陣列任務中解決了問題。謝謝Tim Williams – m25