[英]writing a macro code to turn on and off a series in an excel chart
我在Excel中有一些看起來像這樣的數據
Time Ending NSW1.Price Black.Coal Gas
1/01/2011 0:00 30.89335731 32.33667677 41.63653171
8/01/2011 0:00 30.98102854 32.24805366 41.33294734
15/01/2011 0:00 30.73075514 32.11496704 40.76272865
22/01/2011 0:00 30.76027568 30.50381086 36.56215084
29/01/2011 0:00 29.76732763 34.65090389 43.94289058
5/02/2011 0:00 37.76696975 39.97741408 52.7701473
12/02/2011 0:00 37.94918779 38.96889352 50.08463564
19/02/2011 0:00 37.20419977 38.83388594 49.44580279
26/02/2011 0:00 36.87868151 38.64890145 48.77325684
我試圖創建一個復選框來打開和關閉圖中的系列。 例如,如果我只想要一張煤和天然氣的圖表,而不想要nsw1price。
我記錄了一個宏來執行此操作,然后將其分配給一個復選框。 但是我的宏不起作用?
這是錄音中的代碼:
Sub Macro8()
'
' Macro8 Macro
'
'
ActiveSheet.ChartObjects("Chart 2").Activate
ActiveSheet.ChartObjects("Chart 2").Activate
Application.CutCopyMode = False
Range("J17").Select
End Sub
我不確定該如何解決?
任何幫助,將不勝感激,謝謝。
EDIT1:
您將需要標識要修改的序列號。 但是此代碼將翻轉系列的可見狀態。 這適用於折線圖:
Sub Macro1()
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.FullSeriesCollection(2).Format.Line.Visible = _
Not ActiveChart.FullSeriesCollection(2).Format.Line.Visible
End Sub
如果您有條形圖,則還需要解決填充問題:
ActiveChart.FullSeriesCollection(2).Format.Fill.Visible = _
Not ActiveChart.FullSeriesCollection(2).Format.Fill.Visible
好了,有兩種方法可以做到這一點,每種方法都有其優缺點。
1)我認為最簡單的方法是添加一個覆蓋圖例項的白色框,並翻轉框的可見狀態,使其與系列可見。 ActiveSheet.Shapes("coalRectangle").Visible = msoTrue
2)下一個選項將重新考慮您刪除然后恢復每個系列的整個過程:
Sub DeleteSeries()
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.FullSeriesCollection(3).Delete
End Sub
Sub AddSeries()
ActiveSheet.ChartObjects("Chart 1").Activate
With ActiveChart.SeriesCollection.NewSeries
.Values = "=Sheet1!L12:L23"
.Name = "=Sheet1!L11"
End With
End Sub
第一個的優點是簡單,但是如果有很多列,根據圖例的布局可能會很棘手。 如果用戶可以添加或刪除許多不同的列,第二個缺點就是要跟蹤序列號。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.