У меня есть макрос, который работает, создает новый лист и заполняет его различными графами. Данные для этих графиков взяты из листа 2. Я хочу, чтобы иметь возможность удалить sheet2 после генерации графиков, не теряя всю информацию на графиках. До сих пор я пытался настроить вычисления вручную, защищать листы и защищать диаграммы, используя методы ProtectData и ProtectSelection. Все вышесказанное потерпело неудачу. Есть ли способ использовать vba, чтобы остановить изменения диаграмм после их создания? Благодарю.Как остановить диаграммы от автоматического обновления в excel
Редактировать: Ответ предложил заполнить массив значениями из диапазона, а затем использовать этот массив для генерации диаграммы. Теперь я сталкиваюсь с ошибкой несоответствия типа при попытке создания диаграммы. Можно ли установить исходные данные равными массиву? Вот мой код до сих пор:
Dim PlotRangeBar() As Long
Dim PlotRangePie As Variant
Dim XValPie As Variant
Dim XRangeBar As Range
Dim CellCount As Long
'Create bar graph
Set XRangeBar = ActiveWorkbook.Sheets(2).Range("B" & DataStart & ":B" & DataEnd)
i = 0
For Row = DataStart To DataEnd
If Cells(Row, UsedColTimesheet).FormulaR1C1 <> "0" And Cells(Row, UsedColTimesheet) <> vbNullString Then
ReDim Preserve PlotRangeBar(i)
PlotRangeBar(i) = Cells(Row, UsedColTimesheet).Value
i = i + 1
End If
Next
ActiveWorkbook.Sheets(Sheets.Count).Select
ActiveSheet.Shapes.AddChart.Select
With ActiveChart
.ChartType = xlColumnStacked
.SetSourceData Source:=PlotRangeBar
.SeriesCollection.NewSeries
.SeriesCollection(1).XValues = XRangeBar
.SetElement (msoElementChartTitleCenteredOverlay)
.ApplyLayout (1)
.ChartTitle.Text = ResourceName & " - Hours per project"
.Legend.Delete
.ChartStyle = 18
.ProtectSelection = True
End With
Есть ли причина, по которой вы хотите удалить лист2, а не скрывать или скрывать его? – Soulfire
Лист2 необязательно должен быть удален, но все данные необходимо удалить. Это связано с тем, что если пользователь хочет сгенерировать еще один лист с графами, им нужно будет вставить данные в лист2, потому что sheet2 - это то место, где программа всегда ищет данные для создания диаграмм. Поэтому, если пользователю нужны два набора графиков, которые соответствуют различным наборам данных, данные для создания первого набора диаграмм не могут существовать в листе2. –
Звучит так, как будто это новый вопрос. – ale10ander