【发布时间】:2018-09-10 09:36:16
【问题描述】:
我真的是 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 计数器选择每个引用的单元格(点和 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
【问题讨论】:
标签: vba excel for-loop syntax scatter-plot