如何在VBA图表生成代码中实现.IncrementLeft 360使图表并排?
实现VBA图表并排显示(解决堆叠问题)
你的代码当前每次创建图表时都使用默认位置,导致所有图表堆叠在一起。要实现图表并排显示,需要在创建每个图表后调整其水平位置,利用IncrementLeft方法实现偏移。
修改要点:
- 新增
Shape类型变量,用来引用创建的图表形状(因为AddChart返回的是Shape对象,而非Chart对象,直接操作Shape才能调整位置) - 根据循环变量
j计算偏移量:因为j从5开始,第一个图表(j=5)不需要偏移,后续每个图表依次向右偏移360单位,用360 * (j - 5)作为偏移值
修改后的完整代码:
Sub AddChartsTemplate() Dim i As Integer '行数 Dim j As Integer '列数 Dim chartShape As Shape '新增:引用图表形状 i = Cells(Rows.Count, 2).End(xlUp).Row For j = 5 To 9 '先创建图表形状并赋值给变量 Set chartShape = ActiveSheet.Shapes.AddChart With chartShape.Chart .ChartType = xlLine .SeriesCollection.NewSeries With .SeriesCollection(1) .XValues = "=" & ActiveSheet.Name & "!" & _ Range(Cells(12, 2), Cells(i, 2)).Address .Name = "=" & ActiveSheet.Name & "!" & _ Cells(10, j).Address .Values = "=" & ActiveSheet.Name & "!" & _ Range(Cells(12, j), Cells(i, j)).Address End With ' .HasLegend = False End With '调整图表位置:根据j的值计算偏移量,实现并排 chartShape.IncrementLeft 360 * (j - 5) Next j End Sub
补充说明:
- 如果360的偏移量不合适,可以根据实际图表宽度调整这个数值,确保图表之间不会重叠
- 若需要同时调整垂直位置,可使用
IncrementTop方法,逻辑和IncrementLeft一致
内容的提问来源于stack exchange,提问作者sandy carr
相关产品推荐
相关产品推荐

