2013-06-26 54 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

新问题。关于图例上的红线和绿线,有一种方法可以在未选择变量时使其消失。 –