簡體   English   中英

Excel 2016 VBA:將圖表的源數據設置為命名表

[英]Excel 2016 VBA: Set Source Data for a Chart to a Named Table

標題很不言自明。

我有一個命名表Table_Unit_2_Data ,我想將其設置為將使用VBA創建的圖表的源數據。

在錄制宏的過程中,我選擇了整個表格,並插入了一張圖表。 這是我得到的代碼(Build是工作表的名稱):

Sub Test()
    Range("Table_Unit_2_Data[#All]").Select
    ActiveSheet.Shapes.AddChart2(240, xlXYScatterSmoothNoMarkers).Select
    ActiveChart.SetSourceData Source:= Range("Build!$Y$1:$AD$2")
End Sub

好了,正如您所看到的,將特定的$ A $ 1范圍傳遞到SetSoureData中。 這將不起作用,因為Table_Unit_2_Data的范圍將更改。

我試圖這樣做:

With Sheet2.Shapes.AddChart2(240, xlXYScatterSmoothNoMarkers)
    .Chart.SetSourceData (Sheet2.Range("Table_Unit_2_Data[#All]"))
End With

但是,然后我得到錯誤“必需的對象”。

我似乎無法以這樣一種方式來表達我的搜索查詢,即在互聯網上找到針對該特定問題的相關答案,因此我很抱歉提出什么可能是多余的問題。 如果有人可以幫助我解決這個問題,那么我將不勝感激,並且如果有人在線上有很好的文章或資料來源來提供有關VBA中圖表創建細微差別的信息,那也將非常有幫助。

謝謝。

除了Domenic所說的(正確的+會導致“ Object Required”錯誤)外,您的代碼也不清楚“ Sheet2”是什么,只是它是某張紙的代號 從記錄的宏中,我可以推斷出實際的表在名為“ Build”的工作表上,因此另一種可能需要考慮的是Sheet2實際上不是Sheets(“ Build”)的代號。 同樣,我無法從提供的代碼中真正看出來。

雖然我確實喜歡使用工作表代號,但是如果您不想使名稱具有描述性,我強烈建議您不要使用它們。

FWIW,還有另一種引用表范圍的方法,它稍微靈活一些,特別是如果您要在代碼中的其他地方引用該表。 只需創建一個ListObject變量:

Dim UnitTable2 As ListObject
Set UnitTable2 = Sheets("Build").ListObjects("Table_Unit_2_Data")

您將能夠真正輕松地引用表的任何部分:

Dim rng As Range
'Reference the whole table, including headers:
Set rng = UnitTable2.Range
'Reference just the table data (no headers):
Set rng = UnitTable2.DataBodyRange
'Reference just the data in a single column:
Set rng = UnitTable2.ListColumns("Col1").DataBodyRange
'Reference the headers only
Set rng = UnitTable2.HeaderRowRange

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM