2013-06-26 58 views
1
Option Explicit 

Public PlotName As String 
Public PlotRange As Range 

Sub Tester() 
Range("TCKWH.V.1").Select 
AddPlot ActiveSheet.Range("C9:C13,D9:O13") 
End Sub 

Sub AddPlot(rng As Range) 
With ActiveSheet.Shapes.AddChart 
    PlotName = .Name 
    .Chart.ChartType = xlLineMarkers 
    .Chart.SetSourceData Source:=Range(rng.Address()) 

.Chart.HasTitle = True 
.Chart.ChartTitle.Text = Range("C9") 

End With 
Set PlotRange = rng 
Application.EnableEvents = False 
rng.Select 
Application.EnableEvents = True 
End Sub 

Sub RemovePlot(rng As Range) 
If Not PlotRange Is Nothing Then 
    If Application.Intersect(rng, PlotRange) Is Nothing Then 
     On Error Resume Next 
     rng.Parent.Shapes(PlotName).Delete 
     On Error GoTo 0 
    End If 
End If 

End Sub 
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
RemovePlot Target 
End Sub 

我有這段代碼根據通過複選框接受的信息創建圖。但是您不選擇的任何帳戶顯示爲「空白」圖例條目 是否有刪除「空白」圖例條目的宏代碼?Excel CheckBox選擇圖表範圍

enter image description here

+1

你設置'來源範圍:=範圍( 「C9:O13」)'。使用「Series.XValues」和「Series.Values」和「Series.Name」屬性,不需要設置「源」數據,而需要添加/刪除「系列」數據。 –

回答

0

下表創建另一個表。然後將複選框鏈接到第一個表格下方的表格。然後輸入真/假後=IF($B10=TRUE,C3,"")

之後,用底部表的範圍替換AddPlot ActiveSheet.Range("C9:C13,D9:O13")

enter image description here

+0

新問題。關於圖例上的紅線和綠線,有一種方法可以在未選擇變量時使其消失。 –