Я действительно начинающий с макросами VBA и их синтаксисом, так что терпите меня, пожалуйста.
Я пытался назначить контент из определенных ячеек на метки в точечной диаграмме. Начал с записи моего собственного ручного задания и «очистки» этого кода. Прекрасно работает для набора образцов, который я сейчас использую.
Sub Rename_scatter()
'
' Rename_scatter Macro
'
'
ActiveSheet.ChartObjects("Risikomatrix").Activate
ActiveChart.FullSeriesCollection(1).DataLabels.Select
ActiveChart.FullSeriesCollection(1).Points(1).DataLabel.Select
ActiveChart.SeriesCollection(1).DataLabels(1).Format.TextFrame2.TextRange. _
Characters.Text = ""
ActiveChart.SeriesCollection(1).DataLabels(1).Format.TextFrame2.TextRange. _
InsertChartField msoChartFieldFormula, "='Risiko-Log'!$B$2", 1
ActiveChart.FullSeriesCollection(1).Points(2).DataLabel.Select
ActiveChart.SeriesCollection(1).DataLabels(2).Format.TextFrame2.TextRange. _
Characters.Text = ""
ActiveChart.SeriesCollection(1).DataLabels(2).Format.TextFrame2.TextRange. _
InsertChartField msoChartFieldFormula, "='Risiko-Log'!$B$3", 1
ActiveChart.FullSeriesCollection(1).Points(3).DataLabel.Select
ActiveChart.SeriesCollection(1).DataLabels(3).Format.TextFrame2.TextRange. _
Characters.Text = ""
ActiveChart.SeriesCollection(1).DataLabels(3).Format.TextFrame2.TextRange. _
InsertChartField msoChartFieldFormula, "='Risiko-Log'!$B$4", 1
ActiveChart.FullSeriesCollection(1).Points(4).DataLabel.Select
ActiveChart.SeriesCollection(1).DataLabels(4).Format.TextFrame2.TextRange. _
Characters.Text = ""
ActiveChart.SeriesCollection(1).DataLabels(4).Format.TextFrame2.TextRange. _
InsertChartField msoChartFieldFormula, "='Risiko-Log'!$B$5", 1
ActiveChart.FullSeriesCollection(1).Points(5).DataLabel.Select
ActiveChart.SeriesCollection(1).DataLabels(5).Format.TextFrame2.TextRange. _
Characters.Text = ""
ActiveChart.SeriesCollection(1).DataLabels(5).Format.TextFrame2.TextRange. _
InsertChartField msoChartFieldFormula, "='Risiko-Log'!$B$6", 1
End Sub
Очевидно, что это не очень эффективно, поэтому я хотел бы воссоздать подход в цикле for, выбирая каждую ссылочную ячейку с помощью счетчика i (Points и DataLabels будут использовать i, а спецификация индекса или ячейки будет использовать i +1).
Некоторое время я пробовал несколько разных подходов, но, похоже, не могу понять синтаксис правильно. У кого-нибудь есть идея, которая поможет мне пройти через это и восстановить мою мотивацию? Любая помощь приветствуется!
Вот где я сейчас нахожусь:
Sub Rename_scat()
'
' Rename_scat Macro
'
'
Dim i As Integer
Dim LastRow As Integer
LastRow = Range("'Risiko-Log'!A" & Rows.Count).End(xlUp).Row
For i = 1 To LastRow
ActiveSheet.ChartObjects("Risikomatrix").Activate
ActiveChart.FullSeriesCollection(1).DataLabels.Select
ActiveChart.FullSeriesCollection(1).Points(i).DataLabel.Select
ActiveChart.SeriesCollection(1).DataLabels(i).Format.TextFrame2.TextRange. _
Characters.Text = ""
ActiveChart.SeriesCollection(1).DataLabels(i).Format.TextFrame2.TextRange. _
InsertChartField msoChartFieldFormula, "'Risiko-Log'!.Cells(i + 1, 2)", 1
Next i
End Sub