相同的vba代码会生成不同的图形

相同的vba代码会生成不同的图形,vba,excel,Vba,Excel,形势 我有一个简单的VBA代码,它在第5-10列循环,用第3-21行的数据创建图形,设置标题,并设置x轴的值 并发症 代码根据列生成不同的图形,但根据我运行宏的次数,它从同一列生成不同的图形 代码 Sub Macro6() For i = 5 To 10 ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select ActiveChart.HasTitle = True ActiveChart.SetSourceD

形势

我有一个简单的VBA代码,它在第5-10列循环,用第3-21行的数据创建图形,设置标题,并设置x轴的值

并发症

代码根据列生成不同的图形,但根据我运行宏的次数,它从同一列生成不同的图形

代码

Sub Macro6()
For i = 5 To 10
    ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
    ActiveChart.HasTitle = True
    ActiveChart.SetSourceData Source:=Range(Cells(3, i), Cells(21, i))
    ActiveChart.ChartTitle.Text = Cells(1, i)
    ActiveChart.SeriesCollection(1).XValues = "=Chart_data!$B$3:$B$21"
    Next i
End Sub

我刚刚测试了这个,它对我来说工作得很好,这里还有其他代码吗?我能想到的唯一问题是,在获取源代码时,您使用的只是范围。。例如,如果数据在Sheet1中,并且在运行此宏时选择了Sheet2,则将获得完全不同的数据。尝试工作表(“您的源工作表名称”).Range(…可能是整个范围的
Chart\u数据!$B$3:$B$21
只有公式
=RAND()
…尽管如此,
ActiveSheet
可能会导致错误,并且应该只用于测试代码…我刚刚测试了它,它对我来说工作正常,这里还有其他代码吗?我能想到的唯一问题是,当您获取源代码时,您使用的只是范围。例如,如果您的数据在Sheet1中,如果选择了Sheet2当您运行此宏时,它将获得完全不同的数据。请尝试工作表(“您的源工作表名称”)。范围(…可能是整个范围的
Chart\u数据!$B$3:$B$21
仅具有公式
=RAND()
…但是,
ActiveSheet
可能会导致错误,并且应该仅用于测试代码。。。