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

вы устанавливаете 'Source Range: = Range ("C9: О13")'. Вместо того, чтобы устанавливать данные «Source», вам нужно будет добавлять/удалять данные 'Series', используя свойства' Series.XValues' и 'Series.Values' и' Series.Name'. –

ответ

0

Ниже таблицы создать еще одну таблицу. Затем установите флажки в таблицу под первой таблицей. Затем после True/False введите =IF($B10=TRUE,C3,"")

После этого замените AddPlot ActiveSheet.Range("C9:C13,D9:O13") на диапазон нижней таблицы.

enter image description here

+0

Новый вопрос. Что касается красной и зеленой линии над легендой, то есть способ заставить ее исчезнуть, когда переменная не будет выбрана. –

 Смежные вопросы

  • Нет связанных вопросов^_^