Ниже приведен мой код для создания диаграммы на каждом листе в рабочей книге. Я нашел этот код онлайн и изменил его для того, что мне было нужно. Я новичок в VBA и не уверен, как манипулировать кодами с помощью «с» инструкциями. Этот код работал отлично, пока я не изменил информацию, расположенную в ячейке B1, название моей диаграммы. С тех пор мой код создает 2 серии. Серия 2 не построена на графике, но появляется в легенде. Когда я нажимаю на график для просмотра собранных данных, он не заполняется, см. Ссылку imgur, [1]: https://i.stack.imgur.com/n1jPc.jpg, для визуализации. Когда я просматриваю серию, я хочу, чтобы она показывала A3: A630 и B3: B630.Скрытие серии в диаграмме в excel VBA
Как я могу удалить эту серию 2? Кроме того, я ввел текст в A1, и он создал Series 3. Я хочу убедиться, что на моей диаграмме видна только серия 1.
Я уже пробовал записывать макрос для удаления серии и использовать это в своем коде, но я всегда получаю не могу продолжить из-за разрыва кода. Записанный макрос дал ActiveSheet.ChartObjects («Диаграмма 1»). Активируйте ActiveChart.FullSeriesCollection (2) .Delete
Я также нашел способ скрыть серию, но еще раз, когда я вставить его после моей. BlockCollection Block дает ошибку «break in code». Selection.Format.Line.Visible = msoFalse
Оригинальный код для создания диаграмм
Sub chartcreation()
Dim sh As Worksheet
Dim chrt As Chart
For Each sh In ActiveWorkbook.Worksheets
Set chrt = sh.Shapes.AddChart.Chart
With chrt
'Data?
.ChartType = xlXYScatterSmooth
.SeriesCollection.NewSeries
.SeriesCollection(1).Name = sh.Range("B1").Value
.SeriesCollection(1).XValues = sh.Range("$A$3:$A$630")
.SeriesCollection(1).Values = sh.Range("$B$3:$B$630")
'Titles
.HasTitle = True
.ChartTitle.Text = sh.Range("B1").Value
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = sh.Range("A2")
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = sh.Range("B2")
'Formatting
.Axes(xlCategory).HasMinorGridlines = False
.Axes(xlValue).HasMajorGridlines = True
.Axes(xlCategory).MinimumScale = 15
.Axes(xlCategory).MaximumScale = 90
.Axes(xlValue).HasMinorGridlines = False
.Axes(xlValue).MinimumScale = 0
.Axes(xlValue).MaximumScale = 60
.HasLegend = True
End With
Next
End Sub
Если 2 выше вариантов изменения коды совершенно неправильно, я нашел следующее код, который проходит через каждую диаграмму на каждом листе и удаляет серию, но я не могу понять, как изменить его для моих нужд. Private Sub Workbook_Open()
Dim Sht As Worksheet
Dim ShtName As String
Dim R As Range
Dim ASht As Worksheet
Set R = ActiveCell 'Save the activecell
Set ASht = ActiveSheet 'Save the activesheet
Application.ScreenUpdating = False
For Each Sht In ActiveWorkbook.Sheets
ShtName = Sht.Name
Select Case ShtName
Case "One", "Two", "Three" 'Charts are on multiple sheets
Call DeleteLegendEntries(Sht)
End Select
Next Sht
ASht.Activate 'Back to original sheet
R.Activate 'Back to original cell
Application.ScreenUpdating = True
End Sub
Еще раз, я хотел бы, чтобы скрыть или удалить все серии, кроме серии 1, которые я переименовал в каждом листе в одной книге. Спасибо заранее за вашу помощь.